我有大量的数据集,并且有大量的值超过平均值。 例如,
<travelerGroup>
<traveler>
<elementNumber>1</elementNumber>
<travelerTypeCode>ADT</travelerTypeCode>
<travelerDetails>
<firstName>Adult One</firstName>
<surname>Surname</surname>
</travelerDetails>
<infant>
<firstName>Infant One</firstName>
<surname>Surname</surname>
<dateOfBirth>2016-01-06</dateOfBirth>
</infant>
</traveler>
<traveler>
<elementNumber>2</elementNumber>
<travelerTypeCode>ADT</travelerTypeCode>
<travelerDetails>
<firstName>Adult Two</firstName>
<surname>Surname</surname>
</travelerDetails>
<infant>
<firstName>Infant Two</firstName>
<surname>Surname</surname>
<dateOfBirth>2017-01-06</dateOfBirth>
</infant>
</traveler>
<traveler>
<elementNumber>5</elementNumber>
<travelerTypeCode>ADT</travelerTypeCode>
<travelerDetails>
<firstName>Adult Three</firstName>
<surname>Surname</surname>
</travelerDetails>
</traveler>
<traveler>
<elementNumber>6</elementNumber>
<travelerTypeCode>CHD</travelerTypeCode>
<travelerDetails>
<firstName>Child One</firstName>
<surname>Surname</surname>
<dateOfBirth>2013-01-06</dateOfBirth>
</travelerDetails>
</traveler>
</travelerGroup>
我希望将 A B
1 'H' 10
2 'E' 10000
3 'L' 12
4 'L' 8
5 'O' 11
单元格设置为0,我尝试了这个,
B2
但是没有运气。 如何使我的数据框架像这样,
df['B'] = df['B'].replace([df['B'] > 15], 0)
谢谢!
答案 0 :(得分:5)
你真的很接近 - 而不是replace
,请使用mask
:
df['B'] = df['B'].mask(df['B'] > 15, 0)
print (df)
A B
1 'H' 10
2 'E' 0
3 'L' 12
4 'L' 8
5 'O' 11
替代:
df['B'] = np.where(df['B'] > 15, 0, df['B'])
print (df)
A B
1 'H' 10
2 'E' 0
3 'L' 12
4 'L' 8
5 'O' 11
如果你想更换一些范围:
df['B'] = np.where(df['B'].between(8,11), 0, df['B'])
print (df)
A B
1 'H' 0
2 'E' 10000
3 'L' 12
4 'L' 0
5 'O' 0
答案 1 :(得分:3)
另一种选择:
df.loc[df['B'] > 15, 'B'] = 0
# df
# B
#0 10
#1 0
#2 12
#3 8
#4 11