pandas 在特定条件下替换行的值

lvmkulzt  于 2023-05-15  发布在  其他
关注(0)|答案(2)|浏览(172)

df1

Name English Maths City
Hdhdn  65    50   Xyz
Hdhdhd 70.6    45   Abc
John   67.4    46   Ydh

我想将John的所有数值替换为0
结果如下所示

Name English Maths City
Hdhdn  65    50   Xyz
Hdhdhd 70.6    45   Abc
John    0    0   Ydh

我想知道做这件事最快的方法是什么。

3phpmpom

3phpmpom1#

DataFrame.locDataFrame.select_dtypes一起使用:

df.loc[df['Name'].eq('John'), df.select_dtypes(np.number).columns] = 0
print (df)
     Name  English  Maths City
0   Hdhdn     65.0     50  Xyz
1  Hdhdhd     70.6     45  Abc
2    John      0.0      0  Ydh
bis0qfac

bis0qfac2#

如果你可能有混合的dtypes,一个健壮的(但非向量化的)方法可以是在“John”行上使用applymap,然后在DataFrame上使用update

df.update(df.loc[df['Name'].eq('John')]
            .applymap(lambda x: 0 if isinstance(x, (float, int)) else x)
          )

print(df)

输出:

Name  English  Maths City
0   Hdhdn     65.0     50  Xyz
1  Hdhdhd     70.6     45  Abc
2    John      0.0      0  Ydh

相关问题