我有一个pandas日期框架,以下代码可以使用
df['hour'] = df.index.hour
df['c'] = df['hour'].apply(circadian)
但是我试图使用以下代码
来减少制作'小时'coloumn的需要df['c'] = df.apply(lambda x: circadian(x.index.hour), axis=1)
但我收到错误消息
AttributeError: ("'Index' object has no attribute 'hour'", u'occurred at index 2015-09-25 01:00:00')
谁知道怎么做?
答案 0 :(得分:5)
方法1:
将DateTimeIndex
转换为Series
并使用apply
。
df['c'] = df.index.to_series().apply(lambda x: circadian(x.hour))
方法2:
使用axis=0
计算行索引。
df['c'] = df.apply(lambda x: circadian(x.index.hour), axis=0)
答案 1 :(得分:1)
<强> 溶液 强>
使用日期时间访问者dt
df['c'] = df.index.to_series().dt.hour.apply(circadian)