【问题标题】:Rename column values using pandas DataFrame使用 pandas DataFrame 重命名列值
【发布时间】:2019-12-01 13:32:48
【问题描述】:

在我的数据框中的一列中,我有五个值:

1,G,2,3,4

如何让它把所有“G”的名字都改成1

我试过了:

df = df['col_name'].replace({'G': 1})

我也试过了:

df = df['col_name'].replace('G',1)

“G”其实是1(不知道为什么会有混名)

编辑:

可以正常工作:

df['col_name'] = df['col_name'].replace({'G': 1})

【问题讨论】:

  • 你不会有重复的列名吗?你想要吗?
  • df['col_name'].replace({'G': 1}) 是正确(正确)的事情。您只需将其适当地分配回数据框。 df['col_name'] = df['col_name'].replace({'G': 1}) df.update(df['col_name'].replace({'G': 1})) df = df.assign(col_name=df['col_name'].replace({'G': 1}))

标签: python python-3.x pandas dataframe


【解决方案1】:

如果我对您的问题的理解正确,那么您是在尝试更改列中的值,而不是列名本身。

鉴于您在那里有混合数据类型,我假设该列的类型为object,因此该数字被读取为字符串。

df['col_name'] = df['col_name'].str.replace('G', '1')

【讨论】:

  • OP 的df['col_name'].replace({'G': 1}) 方法没有理由不起作用。 df['col_name'].str.replace('G', '1')) 没有什么比这更神奇的了。回到数据框的分配搞砸了。
  • 我认为这不会解决问题。我手动检查并且 df['col_name'].replace({'G': 1}) 也工作正常。
【解决方案2】:

你可以试试下面这行

df.replace('G', 1, inplace=True)

【讨论】:

    【解决方案3】:

    你可以试试这个,假设你的数据是这样的:

    ab=pd.DataFrame({'a':[1,2,3,'G',5]})
    

    你将把它替换为:

    ab1=ab.replace('G',4)
    

    【讨论】:

      猜你喜欢
      • 2019-07-21
      • 2021-04-24
      • 2017-06-06
      • 2017-03-05
      • 2021-06-15
      • 1970-01-01
      • 2013-11-19
      相关资源
      最近更新 更多