使用 Python 在 Pandas 数据框中创建星期几列 [英] Create a day-of-week column in a Pandas dataframe using Python
问题描述
使用 Python 在 Pandas 数据框中创建星期几列
Create a day-of-week column in a Pandas dataframe using Python
我想将一个 csv 文件读入一个 Pandas 数据帧,将一列日期从字符串格式解析为一个日期对象,然后生成一个新的列来表示星期几.
I’d like to read a csv file into a pandas dataframe, parse a column of dates from string format to a date object, and then generate a new column that indicates the day of the week.
这就是我正在尝试的:
我想做的是:
import pandas as pd
import csv
df = pd.read_csv('data.csv', parse_dates=['date']))
df['day-of-week'] = df['date'].weekday()
AttributeError: 'Series' object has no attribute 'weekday'
<小时>
感谢您的帮助.詹姆斯
Thank you for your help. James
推荐答案
Pandas 0.23+
使用 pandas.Series.dt.day_name()
,因为 pandas.Timestamp.weekday_name
已被弃用:
import pandas as pd
df = pd.DataFrame({'my_dates':['2015-01-01','2015-01-02','2015-01-03'],'myvals':[1,2,3]})
df['my_dates'] = pd.to_datetime(df['my_dates'])
df['day_of_week'] = df['my_dates'].dt.day_name()
输出:
my_dates myvals day_of_week
0 2015-01-01 1 Thursday
1 2015-01-02 2 Friday
2 2015-01-03 3 Saturday
熊猫 0.18.1+
正如用户 jezrael 在下面指出的,dt.weekday_name
是在 0.18.1 版本中添加的Pandas 文档
Pandas 0.18.1+
As user jezrael points out below, dt.weekday_name
was added in version 0.18.1
Pandas Docs
import pandas as pd
df = pd.DataFrame({'my_dates':['2015-01-01','2015-01-02','2015-01-03'],'myvals':[1,2,3]})
df['my_dates'] = pd.to_datetime(df['my_dates'])
df['day_of_week'] = df['my_dates'].dt.weekday_name
输出:
my_dates myvals day_of_week
0 2015-01-01 1 Thursday
1 2015-01-02 2 Friday
2 2015-01-03 3 Saturday
原答案:
使用这个:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.dt.dayofweek.html
看到这个:
获取 DataFrame 的日期时间列的工作日/星期几一个>
如果你想要一个字符串而不是一个整数,请执行以下操作:
If you want a string instead of an integer do something like this:
import pandas as pd
df = pd.DataFrame({'my_dates':['2015-01-01','2015-01-02','2015-01-03'],'myvals':[1,2,3]})
df['my_dates'] = pd.to_datetime(df['my_dates'])
df['day_of_week'] = df['my_dates'].dt.dayofweek
days = {0:'Mon',1:'Tues',2:'Weds',3:'Thurs',4:'Fri',5:'Sat',6:'Sun'}
df['day_of_week'] = df['day_of_week'].apply(lambda x: days[x])
输出:
my_dates myvals day_of_week
0 2015-01-01 1 Thurs
1 2015-01-02 2 Fri
2 2015-01-01 3 Thurs
这篇关于使用 Python 在 Pandas 数据框中创建星期几列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!