我有这个人。数据帧:
col_a col_b
4 15 69.717679 0.09701
16 69.717679 0.09701
17 69.717679 0.09701
18 69.717679 0.09701
19 69.717679 0.09701
它有一个多索引,第一级表示月份(4),下一级表示月份日期(1..31)。如何将多级索引转换为日期时间索引?年份值为2013年。
我试过了:
pd.to_datetime(df_past.index.levels[1] + df_past.index.levels[0] + 2013, format="%d%m%Y")
但得到错误:
*** ValueError: cannot evaluate a numeric op with unequal lengths
答案 0 :(得分:4)
要获取索引级别的值,您需要.levels
而不是pd.to_datetime(2013 * 10000 + df_past.index.get_level_values(0) * 100 +
df_past.index.get_level_values(1), format="%Y%m%d")
:
astype(str)
此外,如果将它们添加为整数值,则需要乘以10000/100才能获得正确的格式。另一种方法是{{1}}每个,然后只需添加(连接)就可以了。
答案 1 :(得分:1)
以下列表comprehension / zip方法将为日期时间对象提供日期。
import datetime as dt
new_index = [dt.datetime(2013, month, day)
for month, day in zip(*[df.index.get_level_values(i) for i in (0, 1)])]