替换熊猫数据框中的特定值范围

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)

谢谢!

jez*_*ael 6

您真的很亲密,而不是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)


DYZ*_*DYZ 5

另一种选择:

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)