如何为DataFrame添加列以提取Start_Time对应的星期几?
嘿,这个需求超常见的,用Pandas几步就能搞定!我给你拆解一下具体操作:
第一步:确保时间列是datetime格式
首先得确认你的Start_Time列是datetime类型——只有这种类型才能调用Pandas内置的时间相关方法。如果当前这列是字符串格式,先执行转换:
import pandas as pd df['Start_Time'] = pd.to_datetime(df['Start_Time'])
Pandas会自动识别你给出的YYYY-MM-DD HH:MM:SS格式,完全不用额外指定格式参数~
第二步:添加星期几的列
根据你想要的输出形式,有三种常用实现方式:
方式1:获取数字形式的星期(0=周一,6=周日)
如果你需要用数字代表星期(方便后续统计或计算),可以用dt.weekday:
df['Weekday_Num'] = df['Start_Time'].dt.weekday
注:如果想要1-7的数字(1=周一,7=周日),换成dt.isoweekday()即可
方式2:获取英文星期名称
直接获取可读性更强的英文星期名,用dt.day_name():
df['Weekday_Name'] = df['Start_Time'].dt.day_name()
比如你给出的2016-02-08会返回Monday
方式3:获取中文星期名称
如果需要中文的星期标识,可以自己做个映射表,配合map()方法实现:
weekday_cn_map = {0: '周一', 1: '周二', 2: '周三', 3: '周四', 4: '周五', 5: '周六', 6: '周日'} df['Weekday_CN'] = df['Start_Time'].dt.weekday.map(weekday_cn_map)
完整示例代码
把上面的步骤整合起来,用你的测试数据跑一遍:
import pandas as pd # 构造你的示例DataFrame data = {'Start_Time': ['2016-02-08 05:46:00', '2016-02-08 06:07:59', '2016-02-08 06:49:27', '2016-02-08 07:23:34']} df = pd.DataFrame(data) # 转换为datetime类型 df['Start_Time'] = pd.to_datetime(df['Start_Time']) # 添加不同形式的星期列 df['Weekday_Num'] = df['Start_Time'].dt.weekday df['Weekday_Name'] = df['Start_Time'].dt.day_name() df['Weekday_CN'] = df['Start_Time'].dt.weekday.map({0: '周一', 1: '周二', 2: '周三', 3: '周四', 4: '周五', 5: '周六', 6: '周日'}) print(df)
运行后你会得到这样的结果:
Start_Time Weekday_Num Weekday_Name Weekday_CN0 2016-02-08 05:46:00 0 Monday 周一
1 2016-02-08 06:07:59 0 Monday 周一
2 2016-02-08 06:49:27 0 Monday 周一
3 2016-02-08 07:23:34 0 Monday 周一
内容的提问来源于stack exchange,提问作者lacerda
相关产品推荐
相关产品推荐

