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_namedf['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的名字日的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在几天内获得pandas抵消别名的持续时间?

Pandas | 22 时间差

装饰器

to_datetime 值错误:至少必须指定 [年、月、日] Pandas

装饰器一篇整完

Pandas 数据框:ValueError:num 必须为 1 <= num <= 0,而不是 1