Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
437 views
in Technique[技术] by (71.8m points)

python - Replace a specific range of values in a pandas dataframe

I have big data set and there are tons of values which are way over average. For example,

    A         B
1  'H'       10
2  'E'    10000
3  'L'       12
4  'L'        8
5  'O'       11

and I want to set B2 cell as 0 and I tried this,

df['B'] = df['B'].replace([df['B'] > 15], 0)

But didn't get any luck. How can make my data frame like this,

    A         B
1  'H'       10
2  'E'        0
3  'L'       12
4  'L'        8
5  'O'       11

Thank you!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You are really close - instead of replace, use 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

Alternative:

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

If you want replace some range:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...