gpt4 book ai didi

Python根据双索引中的星期几创建虚拟变量

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:09 24 4
gpt4 key购买 nike

我有一个带有双索引(日期、时间)的数据框,如果索引日期在正确的日期,我想创建新列“星期一”、“星期二”、“星期三”等等于 1。

我的原始数据框:

                       Visitor  
Date Time
2017-09-11 4:45 0
5:00 1
5:15 26
....
2017-09-12 4:45 0
5:00 1
5:15 26
....

我想要的东西:

                       Visitor      Monday    Tuesday
Date Time
2017-09-11 4:45 0 1 0
5:00 1 1 0
5:15 26 1 0
....
2017-09-12 4:45 0 0 1
5:00 1 0 1
5:15 26 0 1
....

这是我尝试过的:

df['Monday'] = (df.index.get_level_values(0).weekday() == 0)

但是我收到一条错误消息“'Int64Index' 对象不可调用”。

提前致谢!

最佳答案

您需要从 :

中删除 ()
df['Monday'] = (df.index.get_level_values(0).weekday == 0).astype(int)

print (df)
Visitor Monday
Date Time
2017-09-11 4:45 0 1
5:00 1 1
5:15 26 1
2017-09-12 4:45 0 0
5:00 1 0
5:15 26 0

names = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

for i, x in enumerate(names):
df[x] = (df.index.get_level_values(0).weekday == i).astype(int)
print (df)
Visitor Monday Tuesday Wednesday Thursday Friday \
Date Time
2017-09-11 4:45 0 1 0 0 0 0
5:00 1 1 0 0 0 0
5:15 26 1 0 0 0 0
2017-09-12 4:45 0 0 1 0 0 0
5:00 1 0 1 0 0 0
5:15 26 0 1 0 0 0

Saturday Sunday
Date Time
2017-09-11 4:45 0 0
5:00 0 0
5:15 0 0
2017-09-12 4:45 0 0
5:00 0 0
5:15 0 0

另一种解决方案是改进了另一种原创answer - 需要 DatetimeIndex.weekday_nameget_dummies , 然后 set_index按原始索引并在必要时添加重新索引以添加任务名称:

names = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

df1 = df.join(pd.get_dummies(df.index.get_level_values(0).weekday_name)
.set_index(df.index).reindex(columns=names, fill_value=0))
print (df1)
Visitor Monday Tuesday Wednesday Thursday Friday \
Date Time
2017-09-11 4:45 0 1 0 0 0 0
5:00 1 1 0 0 0 0
5:15 26 1 0 0 0 0
2017-09-12 4:45 0 0 1 0 0 0
5:00 1 0 1 0 0 0
5:15 26 0 1 0 0 0

Saturday Sunday
Date Time
2017-09-11 4:45 0 0
5:00 0 0
5:15 0 0
2017-09-12 4:45 0 0
5:00 0 0
5:15 0 0

关于Python根据双索引中的星期几创建虚拟变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46219517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com