Num day to Name Day with Pandas [英] Num day to Name day with Pandas
问题描述
如果使用此功能,则 pd.DatetimeIndex(dfTrain ['datetime'])。weekday
我可以获取当天的日期,但是找不到任何函数给出de day的名称...所以我需要将0转换为星期一,将1转换为星期二,依此类推。
If I use this funtion pd.DatetimeIndex(dfTrain['datetime']).weekday
I get number of the day, but I don't find any function which give the name of de day... So I need to convert 0 to Monday, 1 to Tuestday and so on.
这里是我的数据框示例:
Here is an example of my dataframe:
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
另一个问题是,两者之间的区别是 pandas.DatetimeIndex.dayofweek
和 pandas.DatetimeIndex.weekday
?
Another question more, which is the difference between pandas.DatetimeIndex.dayofweek
and pandas.DatetimeIndex.weekday
?
推荐答案
一种方法,只要datetime已经是datetime列,则应用 datetime.strftime
来获取字符串。工作日:
One method, so long as datetime is already a datetime column is to apply datetime.strftime
to get the string for the weekday:
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
关于您的其他问题,工作日
和工作日
。
As to your other question, there is no difference between dayofweek
and weekday
.
定义工作日到String等效的映射并在工作日调用映射会更快:
It will be quicker to define a map of the weekday to String equivalent and call map on the 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
之前的版本,应该可以进行以下操作:
For version prior to 0.15.0
the following should work:
import datetime as dt
df['weekday'] = df['datetime'].apply(lambda x: dt.datetime.strftime(x, '%A'))
版本0.18.1及更高版本
现在有了新的便捷方法d dt.weekday_name
执行上述操作
There is now a new convenience method dt.weekday_name
to do the above
0.23.0版及更高版本
weekday_name现在被贬义为 dt.day_name
。
weekday_name is now depricated in favour of dt.day_name
.
这篇关于Num day to Name Day with Pandas的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!