jay*_*o03 3 python dataframe pandas
我有大数据集,并且有大量价值超出平均值。例如,
A B
1 'H' 10
2 'E' 10000
3 'L' 12
4 'L' 8
5 'O' 11
Run Code Online (Sandbox Code Playgroud)
我想将像元设置B2为0,然后尝试了
df['B'] = df['B'].replace([df['B'] > 15], 0)
Run Code Online (Sandbox Code Playgroud)
但是没有任何运气。如何使我的数据框像这样,
A B
1 'H' 10
2 'E' 0
3 'L' 12
4 'L' 8
5 'O' 11
Run Code Online (Sandbox Code Playgroud)
谢谢!
您真的很亲密,而不是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
Run Code Online (Sandbox Code Playgroud)
选择:
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
Run Code Online (Sandbox Code Playgroud)
如果要替换某个范围:
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
Run Code Online (Sandbox Code Playgroud)
另一种选择:
df.loc[df['B'] > 15, 'B'] = 0
# df
# B
#0 10
#1 0
#2 12
#3 8
#4 11
Run Code Online (Sandbox Code Playgroud)