您可以使用 np.where 指定所需的条件。如果为 True,则产生 x,否则产生 y。
np.where(condition, x, y)
所以,解决办法是:
df.B = np.where((df.B < 0) & (df.B > 10), np.NaN, df.B)
例如:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))
会输出类似的东西:
A B C D
0 2 5 6 2
1 0 4 0 0
2 4 3 9 0
3 5 1 1 8
4 2 3 6 5
5 3 0 3 9
6 0 4 3 4
7 4 1 4 5
8 0 5 1 5
9 6 7 4 4
那么如果你应用 where 条件:
df.B = np.where((df.B < 6) & (df.B > 2), np.NaN, df.B)
A B C D
0 2 NaN 6 2
1 0 NaN 0 0
2 4 NaN 9 0
3 5 1.0 1 8
4 2 NaN 6 5
5 3 0.0 3 9
6 0 NaN 3 4
7 4 1.0 4 5
8 0 NaN 1 5
9 6 7.0 4 4
您可以在这里找到更多信息:https://numpy.org/doc/stable/reference/generated/numpy.where.html