python - 如何在 Python 数据框中同时替换多行?

标签 python pandas dataframe

我有一个数据集,其中一列具有以下唯一值。

   df['Gender'].unique()

   array(['Female', 'M', 'Male', 'male', 'm', 'Male-ish', 'maile',
   'Trans-female', 'Cis Female', 'something kinda male?', 'Cis Male',
   'queer/she/they', 'non-binary', 'Make', 'Nah', 'All', 'Enby',
   'fluid', 'Genderqueer', 'Androgyne', 'Agender', 'Guy (-ish) ^_^',
   'male leaning androgynous', 'Male ', 'Man', 'msle', 'Neuter',
   'queer', 'A little about you', 'Malr',
   'ostensibly male, unsure what that really means')]

如您所见,在某些情况下,某行应列为“Male”(当然,我指的是“Male”拼写错误的情况)。如何在不调用替换函数十次的情况下将这些值替换为“男性”?这是我试过的代码:

x=0
while x<=11:
for i in df['Gender']:
    if i[0:2]=='Ma':
        print('Male')
    elif i[0]=='m':
        print('Male')
x+=1

然而,我只是得到了一堆“男性”的打印品。

编辑:我想将以下值转换为“男性”:“M”、“男性”、“m”、“maile”、“Make”、“Man”、“msle”、“Malr”、“男性'

最佳答案

创建一个包含男性所有昵称的列表:

males_list = ['M', 'male', 'm', 'maile', 'Make', 'Man', 'msle', 'Malr', 'Male ']

然后将它们替换为:

df.loc[df['Gender'].isin(males_list), 'Gender'] = 'Male'

顺便说一句:总有比在 pandas 中循环行更好的解决方案,不仅仅是在这种情况下。

关于python - 如何在 Python 数据框中同时替换多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58079386/

相关文章:

python - 无法查询 ListField(EmbeddedDocumentField)

python - 根据分隔符垂直拆分 DataFrame

Python 和 Pandas 对象赋值

Python pandas 根据每个输入不同的另一列进行排名/排序

python - 在 Pandas 列中,如何找到特定值出现的最大连续行数?

python - 按日期查找值并对它们求和

python - 将模型之外的字段组合到预先存在的数据库中的正确方法

python - 如何使用 Python 从网站中提取表格

python - 用于逆矩阵和稀疏矩阵乘积的高效 numpy/lapack 例程?

python - 使用索引值列表对 pandas 多索引数据帧进行切片