首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python在Pandas dataframe中创建周几列

使用Python在Pandas dataframe中创建周几列
EN

Stack Overflow用户
提问于 2015-05-14 02:24:12
回答 7查看 150.7K关注 0票数 74

使用Python在Pandas dataframe中创建周几列

我想将csv文件读入pandas数据帧,将一列日期从字符串格式解析为date对象,然后生成一个表示星期几的新列。

这就是我正在尝试的:

我想要做的是:

代码语言:javascript
复制
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'

谢谢你的帮助。詹姆斯

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-05-14 02:36:36

熊猫0.23+

使用pandas.Series.dt.day_name(),因为pandas.Timestamp.weekday_name已被弃用:

代码语言:javascript
复制
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()

输出:

代码语言:javascript
复制
    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在下面指出的,在0.18.1 Pandas Docs版本中添加了dt.weekday_name

代码语言:javascript
复制
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

输出:

代码语言:javascript
复制
    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

请看以下内容:

Get weekday/day-of-week for Datetime column of DataFrame

如果你想要一个字符串而不是一个整数,可以这样做:

代码语言:javascript
复制
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])

输出:

代码语言:javascript
复制
    my_dates  myvals day_of_week
0 2015-01-01       1       Thurs
1 2015-01-02       2         Fri
2 2015-01-01       3       Thurs
票数 154
EN

Stack Overflow用户

发布于 2016-05-09 03:10:04

在版本0.18.1中添加了dt.weekday_name

代码语言:javascript
复制
print df
    my_dates  myvals
0 2015-01-01       1
1 2015-01-02       2
2 2015-01-03       3

print df.dtypes
my_dates    datetime64[ns]
myvals               int64
dtype: object

df['day_of_week'] = df['my_dates'].dt.weekday_name()
print df
    my_dates  myvals day_of_week
0 2015-01-01       1    Thursday
1 2015-01-02       2      Friday
2 2015-01-03       3    Saturday

另一种使用assign的解决方案

代码语言:javascript
复制
print df.assign(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
票数 13
EN

Stack Overflow用户

发布于 2018-08-11 08:21:09

使用dt.weekday_namedeprecated since pandas 0.23.0,请改用dt.day_name()

代码语言:javascript
复制
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['my_dates'].dt.day_name()

0    Thursday
1      Friday
2    Saturday
Name: my_dates, dtype: object
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30222533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档