使用pandas DataFrame重命名列值

11

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

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})

你不会有重复的列名吗?你想要那样做吗? - user3483203
5
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})) - piRSquared
4个回答

15

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

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

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

4
“df['col_name'].replace({'G': 1})”这种方法应该是可行的,没有什么特别之处。“df['col_name'].str.replace('G', '1')”也没有更好的效果。问题出在将值重新赋回到数据框时出错了。 - piRSquared
1
我认为这不会解决问题。我手动检查了一下,df['col_name'].replace({'G': 1}) 也很好用。 - MNA

5
你可以尝试以下代码行:
df.replace('G', 1, inplace=True)

1

使用numpy

import numpy as np

df['a'] = np.where((df.a =='G'), 1, df.a)

0

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

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

然后你将把它替换为:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接