【问题标题】:Rename name in Python Pandas MultiIndex在 Python Pandas MultiIndex 中重命名名称
【发布时间】:2020-05-10 21:44:09
【问题描述】:

我尝试重命名 Pandas MultiIndex 中的列名,但它不起作用。在这里你可以看到我的系列对象。 顺便说一句,为什么数据框 df_injury_record 在这个函数中变成了一个系列对象?

Frequency_BodyPart = df_injury_record.groupby(["Surface","BodyPart"]).size()

在下一行中,您将看到我尝试重命名该列。

Frequency_BodyPart.rename_axis(index={'Surface': 'Class'})

但在此之后,该列仍然具有相同的名称。

问候

【问题讨论】:

  • 您是否也将其分配回去了? Frequency_BodyPart=Frequency_BodyPart.rename_axis(index={'Surface': 'Class'}) ?
  • 我认为@anky_91 的解决方案应该可以解决它。否则,您可以传递inplace=True 参数。

标签: python pandas series multi-index


【解决方案1】:

一个可能的问题应该是 0.24 下的 pandas 版本,或者你忘记了像提到的 @anky_91 那样分配回:

df_injury_record = pd.DataFrame({'Surface':list('aaaabbbbddd'),
                                 'BodyPart':list('abbbbdaaadd')})

Frequency_BodyPart = df_injury_record.groupby(["Surface","BodyPart"]).size()
print (Frequency_BodyPart)
Surface  BodyPart
a        a           1
         b           3
b        a           2
         b           1
         d           1
d        a           1
         d           2
dtype: int64

Frequency_BodyPart = Frequency_BodyPart.rename_axis(index={'Surface': 'Class'})
print (Frequency_BodyPart)
Class  BodyPart
a      a           1
       b           3
b      a           2
       b           1
       d           1
d      a           1
       d           2
dtype: int64

如果希望 3 列 DataFrame 也适用于较旧的 pandas 版本:

df = Frequency_BodyPart.reset_index(name='count').rename(columns={'Surface': 'Class'})
print (df)
  Class BodyPart  count
0     a        a      1
1     a        b      3
2     b        a      2
3     b        b      1
4     b        d      1
5     d        a      1
6     d        d      2

【讨论】:

    猜你喜欢
    • 2022-06-14
    • 2017-05-04
    • 2019-02-24
    • 2019-01-26
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    相关资源
    最近更新 更多