【发布时间】:2020-02-13 21:02:21
【问题描述】:
我有一个pandas.DataFrame 充满了具有多索引列名的时间历史数据。多索引的一级是列的单位。我希望能够更改列的单位,这相当简单。不过,更改多索引以显示新单位让我很难过。
def units_change(df, current = 'mm', new = 'm', converter = lambda x: x/1000):
df.loc[:, (slice(None), current)] = df.loc[:, (slice(None), current)].apply(converter)
#something to change the `current` in the multi-index to `new` ('mm' -> 'm' by default)
return df
我想我可以将多索引强制转换为数组、替换、重建和重新索引,但我希望我缺少一些更简单的方法。
【问题讨论】:
-
终于找到答案here:
df.rename(columns = {'mm': 'm'}, level = 1)