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
我想知道做这件事最快的方法是什么。
3phpmpom1#
将DataFrame.loc与DataFrame.select_dtypes一起使用:
DataFrame.loc
DataFrame.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
bis0qfac2#
如果你可能有混合的dtypes,一个健壮的(但非向量化的)方法可以是在“John”行上使用applymap,然后在DataFrame上使用update:
applymap
update
df.update(df.loc[df['Name'].eq('John')] .applymap(lambda x: 0 if isinstance(x, (float, int)) else x) ) print(df)
int
float
isinstance
输出:
Name English Maths City 0 Hdhdn 65.0 50 Xyz 1 Hdhdhd 70.6 45 Abc 2 John 0.0 0 Ydh
2条答案
按热度按时间3phpmpom1#
将
DataFrame.loc
与DataFrame.select_dtypes
一起使用:bis0qfac2#
如果你可能有混合的dtypes,一个健壮的(但非向量化的)方法可以是在“John”行上使用
applymap
,然后在DataFrame上使用update
:int
/float
,如果需要,可以在isinstance
中使用add more types to check。输出: