如何为分栏存储日期的DataFrame添加day.of.the.week列
解决方法:从拆分日期列生成星期几列
别担心,这个问题很好解决!我们可以把分散的日、月、年列合并成标准的日期对象,再提取对应的星期几名称,具体步骤如下:
步骤1:准备环境与数据
首先确保你已经导入了pandas库,先把你的数据整理成标准的DataFrame:
import pandas as pd # 还原你的原始DataFrame data = { 'Day.of.the.month': [1, 2, 3, 4], 'Month': ['January', 'February', 'April', 'January'], 'Year': [2005, 2008, 2009, 2016], 'Items': ['Nothing', 'Food', 'Nothing', 'Bus'], 'Amount.in.euros': [0.00, 7.78, 0.00, 2.00] } df = pd.DataFrame(data)
步骤2:合并日期列并转换为datetime格式
利用pd.to_datetime()方法,将分散的日、月、年列合并成标准日期对象。这里要注意月份是英文全称,所以用%B作为格式匹配符:
# 合并三列为日期字符串,再转换为datetime类型 df['date'] = pd.to_datetime( df['Day.of.the.month'].astype(str) + ' ' + df['Month'] + ' ' + df['Year'].astype(str), format='%d %B %Y' # %d=日,%B=英文全拼月份,%Y=四位数年份 )
步骤3:生成星期几列
通过dt.day_name()方法提取星期几的英文名称,再转成小写以匹配你需要的saturday、sunday格式:
df['day.of.the.week'] = df['date'].dt.day_name().str.lower()
步骤4:(可选)清理中间列
如果不需要临时的date列,可以删除它:
df.drop('date', axis=1, inplace=True)
最终结果
处理后的DataFrame会是这样的:
| Day.of.the.month | Month | Year | Items | Amount.in.euros | day.of.the.week |
|---|---|---|---|---|---|
| 1 | January | 2005 | Nothing | 0.00 | saturday |
| 2 | February | 2008 | Food | 7.78 | saturday |
| 3 | April | 2009 | Nothing | 0.00 | friday |
| 4 | January | 2016 | Bus | 2.00 | monday |
内容的提问来源于stack exchange,提问作者Helena
相关产品推荐
相关产品推荐

