我有一个如下所示的 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
最佳答案
您可以使用 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
关于python - 如何根据条件在 Pandas 数据框的多列上分配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57218632/