Python 将工作日从整数转换为实际名称时出错

Python 将工作日从整数转换为实际名称时出错,python,pandas,datetime,calendar,Python,Pandas,Datetime,Calendar,我试图使用python中的日历库将pd.dt.weekdays()列从整数形式转换为实际名称。 这就是我一直在做的 hours = uber_data["Date/Time"].dt.hour week_day = uber_data["Date/Time"].dt.weekday date = uber_data["Date/Time"].dt.date weekly_data = pd.concat([week_day, hours

我试图使用python中的日历库将
pd.dt.weekdays()
列从整数形式转换为实际名称。 这就是我一直在做的

hours = uber_data["Date/Time"].dt.hour
week_day = uber_data["Date/Time"].dt.weekday
date = uber_data["Date/Time"].dt.date
weekly_data = pd.concat([week_day, hours, date], axis=1)
weekly_data.columns = ["Week Day", "Hour", "Date"]

weekly_data["Week Day"] = weekly_data["Week Day"].apply(lambda x: calendar.day_name[x])
我得到的错误是

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-24-e18771afc253> in <module>()
----> 1 weekly_data["Week Day"] = weekly_data["Week Day"].apply(lambda x: calendar.day_name[x])
      2 weekly_data["Week Day"]

2 frames
/usr/local/lib/python3.6/dist-packages/pandas/core/series.py in apply(self, func, convert_dtype, args, **kwds)
   4211             else:
   4212                 values = self.astype(object)._values
-> 4213                 mapped = lib.map_infer(values, f, convert=convert_dtype)
   4214 
   4215         if len(mapped) and isinstance(mapped[0], Series):

pandas/_libs/lib.pyx in pandas._libs.lib.map_infer()

<ipython-input-24-e18771afc253> in <lambda>(x)
----> 1 weekly_data["Week Day"] = weekly_data["Week Day"].apply(lambda x: calendar.day_name[x])
      2 weekly_data["Week Day"]

/usr/lib/python3.6/calendar.py in __getitem__(self, i)
     76 
     77     def __getitem__(self, i):
---> 78         funcs = self._days[i]
     79         if isinstance(i, slice):
     80             return [f(self.format) for f in funcs]

TypeError: list indices must be integers or slices, not str
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1周数据[“周日”]=周数据[“周日”]。应用(lambda x:calendar.Day\u name[x])
2周_数据[“周日”]
2帧
/应用中的usr/local/lib/python3.6/dist-packages/pandas/core/series.py(self、func、convert\u dtype、args、**kwds)
4211其他:
4212值=self.astype(对象)。\u值
->4213 mapped=lib.map\u推断(值,f,convert=convert\u数据类型)
4214
4215如果len(映射)和isinstance(映射[0],系列):
pandas/_libs/lib.pyx在pandas中。_libs.lib.map_infere()
in(x)
---->1周数据[“周日”]=周数据[“周日”]。应用(lambda x:calendar.Day\u name[x])
2周_数据[“周日”]
/usr/lib/python3.6/calendar.py in_uuugetItem_uuu(self,i)
76
77定义获取项目(自我,i):
--->78 funcs=self.\u天[i]
79如果存在(i,切片):
80返回[f(self.format)表示函数中的f]
TypeError:列表索引必须是整数或片,而不是str
我尝试过更改Week Day列的数据类型,但仍然没有出现错误。 编辑:
通过使用
Series.dt.day\u name()
解决了该问题。如果有人能提供日历库的解决方案,我们将不胜感激。

您可以尝试
Series.dt.day\u name

weekly_data = pd.DataFrame()
weekly_data['Week Day'] = uber_data["Date/Time"].dt.hour
weekly_data['Hour'] = uber_data["Date/Time"].dt.weekday
weekly_data['Date'] = uber_data["Date/Time"].dt.date
weekly_data['Day'] = uber_data["Date/Time"].dt.day_name()
print(weekly_date)

你能提供数据集进行测试吗?或者直接尝试
uber_data[“Date/Time”].dt.weekday_name
来获取工作日名称,如果你有日期,你不需要日历,在这里申请,熊猫有一个内置的:它完成了工作,谢谢。。。。是指向数据集的链接。。。