【问题标题】:rename certain value in pandas series重命名熊猫系列中的某些值
【发布时间】:2017-05-10 10:32:31
【问题描述】:

我有以下熊猫系列:

print(df.head())
          Country  Energy Supply Energy Supply per Capita  % Renewable
0     Afghanistan   3.210000e+08                       10    78.669280
1         Albania   1.020000e+08                       35   100.000000
2         Algeria   1.959000e+09                       51     0.551010
3  American Samoa            NaN                      ...     0.641026
4         Andorra   9.000000e+06                      121    88.695650

如何将阿富汗重命名为阿富汗_new? 我可以设置索引:

df = df.set_index('Country')

然后尝试通过以下方式重命名国家/地区:

df['Afghanistan'].rename('Afghanistan_renamed')

但它不起作用。

【问题讨论】:

  • 是的,这可能会变得棘手的一个原因是您命名以更改第一个列表中的第二个值。所以,想象你的数据是这样的:[ [0,"Afghanistan"], [1,"Albania"] ]。要直接编辑阿富汗,您必须编辑 df[0][1] 的数据结构。我敢肯定也有包装器方法,但这就是您要处理的。

标签: python pandas series


【解决方案1】:

如果需要可以使用替换index:

df = df.set_index('Country')
df = df.rename(index={'Afghanistan':'Afghanistan_renamed'})
print (df)
                     Energy Supply Energy Supply per Capita  % Renewable
Country                                                                 
Afghanistan_renamed   3.210000e+08                       10    78.669280
Albania               1.020000e+08                       35   100.000000
Algeria               1.959000e+09                       51     0.551010
American Samoa                 NaN                      ...     0.641026
Andorra               9.000000e+06                      121    88.695650

对于replace 列:

df['Country'] = df['Country'].replace({'Afghanistan':'Afghanistan_renamed'})
df = df.set_index('Country')
print (df)
                     Energy Supply Energy Supply per Capita  % Renewable
Country                                                                 
Afghanistan_renamed   3.210000e+08                       10    78.669280
Albania               1.020000e+08                       35   100.000000
Algeria               1.959000e+09                       51     0.551010
American Samoa                 NaN                      ...     0.641026
Andorra               9.000000e+06                      121    88.695650

【讨论】:

  • 是的,当然。 Ony 扩展 dict 喜欢 {'Afghanistan':'Afghanistan_renamed', 'Albania':'Albania111'}
  • 不把索引设为Country可以吗?
  • 我认为是的,仅在第二个解决方案中省略 df = df.set_index('Country')
【解决方案2】:

你可以使用 replace() 代替 rename()

df['Country'].replace({'Afghanistan':'Afghanistan_renamed'}, inplace=True)

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 2021-12-07
    • 1970-01-01
    • 2021-08-15
    • 2018-08-16
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    相关资源
    最近更新 更多