【问题标题】:Renaming multiple columns using their index使用索引重命名多个列
【发布时间】:2020-09-21 10:19:40
【问题描述】:

如何使用索引重命名数据框的多个列? 例如,我想将位置 5、6、7、8 的列分别重命名为“五”、“六”、“七”、“八”。我不想单独输入字典中的键。

【问题讨论】:

  • 我的意思是我可以输入 [4:9] 之类的键,然后有另一个新列名列表并重命名它。因为我有数据框,其列名如“未命名 5”等。它是单独输入这些名称很繁琐。
  • 那么使用 zip 的第二种方法应该如你所愿@nona

标签: python pandas dataframe rename


【解决方案1】:

在已有字典的情况下,可以使用rename 映射到新的轴值:

df = pd.DataFrame(columns=range(10))
d = {5:'five', 6:'six', 7:'seven', 8:'eight'}
df = df.rename(d, axis=1)
# Index([0, 1, 2, 3, 4, 'five', 'six', 'seven', 'eight', 9], dtype='object')

或者,正如@ch3ster 指出的那样,rename 同时采用indexcolumn 参数,允许独立重命名:

df = df.rename(columns=d)

如果您知道要重命名的列的范围,并且有一个新列名列表,您可以构建一个字典,如 rename 和:

l = ['five', 'six', 'seven', 'eight', 'nine']
df = df.rename(columns=dict(zip(range(5,9), l)))

【讨论】:

  • 感谢您的信任 ;)
【解决方案2】:

如果您不想将renamedict 一起使用,正如您所提到的,您也可以尝试以这种方式重命名列:

column_names = list(df.columns)
column_names[4:8] = ['five', 'six', 'seven', 'eight']
df.columns = column_names

正如已经提到的,您不必使用dict 一次重命名一列。您可以一次完成所有操作:

my_dict = {5: 'five', 6: 'six', 7: 'seven'} # etc.
df.rename(columns = my_dict, inplace = True)

【讨论】:

  • 该列表有 5 个元素,您分配给的切片,column_names[4:8], 4。结果会出现长度不匹配
【解决方案3】:

建立在你的陈述I don't want to enter the keys in the dictionary individually.的前提下:

您可以使用名为num2words 的模块。

来自文档:

num2words 是一个库,可将42 等数字转换为forty-two 等单词。

用法:

from num2words import num2words
num2words(10)

输出:

ten

pip install num2words

您的最终代码应为:

from num2words import num2words

d = {i: num2words(i) for i in range(100)} 
df = df.rename(d, axis=1)

【讨论】:

  • @nona 如果答案有帮助,请至少upvote
猜你喜欢
  • 2022-11-21
  • 2015-02-04
  • 2019-08-18
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
  • 2018-08-02
  • 1970-01-01
  • 2016-12-29
相关资源
最近更新 更多