如何根据条件在熊猫数据框的多列上分配值

时间:2019-07-26 10:56:24

标签: python python-3.x pandas dataframe

我有一个dtaframe df,如下所示

df = pd.DataFrame({ 
  'A': [20,30,40,-50,60,-70 ], 
  'B': [21, -19, 20, 18, 17, -21], 
  'C': [1,12,-13,14,15,16], 
  'D': [-88, 92, 9, 70, -6, 78]})

我希望列['C','D']上的每个值都为零(该值介于-10和10之间),其余值应保持不变。

是否有类似于data.series.between的东西,可以应用于数据帧 df[(df[['C','D']].between(-10,10,inclusive=True)]=0

输出应为:

    A   B   C   D
0  20  21   0 -88
1  30 -19  12  92
2  40  20 -13   0
3 -50  18  14  70
4  60  17  15   0
5 -70 -21  16  78

1 个答案:

答案 0 :(得分:1)

通过df.mask()df.ge进行比较后,您可以在此处使用df.le

df[['C','D']]=df[['C','D']].mask(df[['C','D']].ge(-10)&df[['C','D']].le(10),0)

np.where()

df[['C','D']]=np.where(df[['C','D']].ge(-10)&df[['C','D']].le(10),0,df[['C','D']])

    A   B   C   D
0  20  21   0 -88
1  30 -19  12  92
2  40  20 -13   0
3 -50  18  14  70
4  60  17  15   0
5 -70 -21  16  78