列の名前が文字列形式の日付(年月)であるデータフレームがあります。これらの名前を日時形式に変換するにはどうすればよいですか?私はこれをやってみました:
new_cols = pd.to_datetime(df.columns)
df = df[new_cols]
しかし、エラーが発生します:
KeyError: "DatetimeIndex(
['2000-01-01', '2000-02-01',
'2000-03-01', '2000-04-01',
'2000-05-01', '2000-06-01',
'2000-07-01', '2000-08-01',
'2000-09-01', '2000-10-01',
'2015-11-01', '2015-12-01',
'2016-01-01', '2016-02-01',
'2016-03-01', '2016-04-01',
'2016-05-01', '2016-06-01',
'2016-07-01', '2016-08-01'],
dtype='datetime64[ns]', length=200, freq=None) not in index"
ありがとう!
loc
列による選択の値が変更されていない場合は、を取得しKeyError
ます。
したがって、出力をcolumns
以下に割り当てる必要があります。
df.columns = pd.to_datetime(df.columns)
サンプル:
cols = ['2000-01-01', '2000-02-01', '2000-03-01', '2000-04-01', '2000-05-01']
vals = np.arange(5)
df = pd.DataFrame(columns = cols, data=[vals])
print (df)
2000-01-01 2000-02-01 2000-03-01 2000-04-01 2000-05-01
0 0 1 2 3 4
print (df.columns)
Index(['2000-01-01', '2000-02-01', '2000-03-01', '2000-04-01', '2000-05-01'], dtype='object')
df.columns = pd.to_datetime(df.columns)
print (df.columns)
DatetimeIndex(['2000-01-01', '2000-02-01', '2000-03-01', '2000-04-01',
'2000-05-01'],
dtype='datetime64[ns]', freq=None)
期間に変換することも可能です:
print (df.columns)
Index(['2000-01-01', '2000-02-01', '2000-03-01', '2000-04-01', '2000-05-01'], dtype='object')
df.columns = pd.to_datetime(df.columns).to_period('M')
print (df.columns)
PeriodIndex(['2000-01', '2000-02', '2000-03', '2000-04', '2000-05'],
dtype='period[M]', freq='M')
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加