Num day与Pandas的名字日
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Num day与Pandas的名字日相关的知识,希望对你有一定的参考价值。
如果我使用这个函数qazxsw poi我得到当天的数字,但我找不到任何给出de day名字的函数...所以我需要将0转换为星期一,1转换为星期二等等。
以下是我的数据框示例:
pd.DatetimeIndex(dfTrain['datetime']).weekday
还有一个问题,那就是 datetime season holiday workingday weather temp atemp humidity windspeed count
0 2011-01-01 00:00:00 1 0 0 1 9.84 14.395 81 0.0000 16
1 2011-01-01 01:00:00 1 0 0 1 9.02 13.635 80 0.0000 40
2 2011-01-01 02:00:00 1 0 0 1 9.02 13.635 80 0.0000 32
3 2011-01-01 03:00:00 1 0 0 1 9.84 14.395 75 0.0000 13
4 2011-01-01 04:00:00 1 0 0 1 9.84 14.395 75 0.0000 1
5 2011-01-01 05:00:00 1 0 0 2 9.84 12.880 75 6.0032 1
6 2011-01-01 06:00:00 1 0 0 1 9.02 13.635 80 0.0000 2
7 2011-01-01 07:00:00 1 0 0 1 8.20 12.880 86 0.0000 3
8 2011-01-01 08:00:00 1 0 0 1 9.84 14.395 75 0.0000 8
9 2011-01-01 09:00:00 1 0 0 1 13.12 17.425 76 0.0000 14
and pandas.DatetimeIndex.dayofweek
之间的区别?
一种方法,只要datetime已经是datetime列,就是应用pandas.DatetimeIndex.weekday
来获取工作日的字符串:
datetime.strftime
至于你的另一个问题,In [105]:
df['weekday'] = df[['datetime']].apply(lambda x: dt.datetime.strftime(x['datetime'], '%A'), axis=1)
df
Out[105]:
datetime season holiday workingday weather temp atemp
0 2011-01-01 00:00:00 1 0 0 1 9.84 14.395
1 2011-01-01 01:00:00 1 0 0 1 9.02 13.635
2 2011-01-01 02:00:00 1 0 0 1 9.02 13.635
3 2011-01-01 03:00:00 1 0 0 1 9.84 14.395
4 2011-01-01 04:00:00 1 0 0 1 9.84 14.395
5 2011-01-01 05:00:00 1 0 0 2 9.84 12.880
6 2011-01-01 06:00:00 1 0 0 1 9.02 13.635
7 2011-01-01 07:00:00 1 0 0 1 8.20 12.880
8 2011-01-01 08:00:00 1 0 0 1 9.84 14.395
9 2011-01-01 09:00:00 1 0 0 1 13.12 17.425
humidity windspeed count weekday
0 81 0.0000 16 Saturday
1 80 0.0000 40 Saturday
2 80 0.0000 32 Saturday
3 75 0.0000 13 Saturday
4 75 0.0000 1 Saturday
5 75 6.0032 1 Saturday
6 80 0.0000 2 Saturday
7 86 0.0000 3 Saturday
8 75 0.0000 8 Saturday
9 76 0.0000 14 Saturday
和dayofweek
之间没有区别。
将工作日的地图定义为工作日的String等效和调用地图会更快:
weekday
对于dayOfWeek={0:'Monday', 1:'Tuesday', 2:'Wednesday', 3:'Thursday', 4:'Friday', 5:'Saturday', 6:'Sunday'}
df['weekday'] = df['datetime'].dt.dayofweek.map(dayOfWeek)
之前的版本,以下应该有效:
0.15.0
版本0.18.1和更新版本
现在有一种新的便利方法import datetime as dt
df['weekday'] = df['datetime'].apply(lambda x: dt.datetime.strftime(x, '%A'))
来做上述事情
版本0.23.0及更新版本
weekday_name现已弃用,以支持qazxsw poi。
在版本dt.weekday_name
中,您可以使用新方法dt.day_name
:
0.18.1
使用dt.weekday_name
是df['weekday'] = df['datetime'].dt.weekday_name
print df
datetime season holiday workingday weather temp atemp
0 2011-01-01 00:00:00 1 0 0 1 9.84 14.395
1 2011-01-01 01:00:00 1 0 0 1 9.02 13.635
2 2011-01-01 02:00:00 1 0 0 1 9.02 13.635
3 2011-01-01 03:00:00 1 0 0 1 9.84 14.395
4 2011-01-01 04:00:00 1 0 0 1 9.84 14.395
5 2011-01-01 05:00:00 1 0 0 2 9.84 12.880
6 2011-01-01 06:00:00 1 0 0 1 9.02 13.635
7 2011-01-01 07:00:00 1 0 0 1 8.20 12.880
8 2011-01-01 08:00:00 1 0 0 1 9.84 14.395
9 2011-01-01 09:00:00 1 0 0 1 13.12 17.425
humidity windspeed count weekday
0 81 0.0000 16 Saturday
1 80 0.0000 40 Saturday
2 80 0.0000 32 Saturday
3 75 0.0000 13 Saturday
4 75 0.0000 1 Saturday
5 75 6.0032 1 Saturday
6 80 0.0000 2 Saturday
7 86 0.0000 3 Saturday
8 75 0.0000 8 Saturday
9 76 0.0000 14 Saturday
,而是使用dt.weekday_name
:
deprecated since pandas 0.23.0
添加@jezrael之前的正确答案,您可以使用:
dt.day_name()
根据df.datetime.dt.day_name()
0 Saturday
1 Saturday
2 Saturday
3 Saturday
4 Saturday
5 Saturday
6 Saturday
7 Saturday
8 Saturday
9 Saturday
Name: datetime, dtype: object
,它还为您的新分类变量提供顺序(在此示例中:'Monday',...,'Sunday')。这可能对您分析的后续步骤有所帮助。
以上是关于Num day与Pandas的名字日的主要内容,如果未能解决你的问题,请参考以下文章