【问题标题】:Changing pandas.MultiIndex value by value按值更改 pandas.MultiIndex 值
【发布时间】: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

我想我可以将多索引强制转换为数组、替换、重建和重新索引,但我希望我缺少一些更简单的方法。

【问题讨论】:

  • 终于找到答案heredf.rename(columns = {'mm': 'm'}, level = 1)

标签: python pandas


【解决方案1】:

文档的这一部分不能解决问题吗?

[rename]方法可用于重命名DataFrame主索引的特定标签。

>>> df
            0       1
one  y    0.1      1.2
     x    0.2      1.3
zero y    2.3      2.4
     x    2.4      2.7

>>>df.rename(index={"one": "two", "y": "z"})
            0       1
two  z    0.1      1.2
     x    0.2      1.3
zero z    2.3      2.4
     x    2.4      2.7

【讨论】:

    猜你喜欢
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2014-04-02
    • 2016-02-21
    • 1970-01-01
    相关资源
    最近更新 更多