我有一个如下所示的数据框,其中包含代表一年中月份和日期的整数的多重索引,以及那些日子的最高和最低温度记录。
df
Min Temp Max Temp
Date Date
1 1 -88 139
2 -115 150
3 -110 139
4 -81 156
5 -80 172
... ... ...
12 2 -94 156
3 -97 172
4 -120 156
5 -124 144
6 -161 130
7 -167 135
8 -141 167
9 -135 178
10 -106 194
11 -106 161
12 -94 144
13 -92 133
14 -149 117
15 -158 117
16 -119 122
17 -111 160
18 -142 133
19 -185 130
20 -190 161
21 -167 161
22 -98 150
23 -162 139
24 -90 183
25 -125 183
26 -119 144
27 -76 130
28 -81 134
29 -117 113
30 -127 106
31 -111 122
如何将此多索引转换为 datetime 类型的单个索引?我正在寻找类似这种转换的东西:
1 1 ---> January 1
1 2 ---> January 2
...
12 31 ---> December 31
最佳答案
以数据框的顶部为例:
>>> df
Min Temp Max Temp
Date Date
1 1 -88 139
2 -115 150
3 -110 139
4 -81 156
5 -80 172
在 MultiIndex 的各个级别上使用 pd.to_datetime
,然后使用所需格式的 strftime
:
df.index = pd.to_datetime(df.index.get_level_values(0).astype(str) + '-' +
df.index.get_level_values(1).astype(str),
format='%m-%d').strftime('%B %d')
>>> df
Min Temp Max Temp
January 01 -88 139
January 02 -115 150
January 03 -110 139
January 04 -81 156
January 05 -80 172
但是,因为这是一个格式化字符串,所以它不再是日期时间格式。如果您希望它是日期时间,则需要包括一年。您可以省略 strftime
,它将使用默认的 1900
:
df.index = pd.to_datetime(df.index.get_level_values(0).astype(str) + '-' +
df.index.get_level_values(1).astype(str),
format='%m-%d')
>>> df
Min Temp Max Temp
1900-01-01 -88 139
1900-01-02 -115 150
1900-01-03 -110 139
1900-01-04 -81 156
1900-01-05 -80 172
关于python - 整数的 Pandas 多索引到日期时间索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53049663/