web-dev-qa-db-ja.com

Python Pandas-インデックス 'オブジェクトには属性'時間 'がありません

pandas dateframeがあり、次のコードが機能します

df['hour'] = df.index.hour
df['c'] = df['hour'].apply(circadian)

しかし、私は次のコードを使用して、「時間」列を作成する必要性を減らしようとしていました

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')

誰かがこれを行う方法を知っていますか?

6
Runner Bean

アプローチ1:

DateTimeIndexSeriesに変換し、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)
7
Nickil Maveli

ソリューション
日時アクセサーを使用するdt

df['c'] = df.index.to_series().dt.hour.apply(circadian)
1
piRSquared