python - 如何根据条件在 Pandas 数据框的多列上分配值

标签 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

最佳答案

您可以使用 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/

相关文章:

python - 使用python angularjs在mysql数据库中插入特殊字符

python - Matplotlib:使用颜色图并对不同值使用不同标记

python - 将元类添加到库类

Python 转换为 .exe 但用户需要能够编辑文件

c++ - 我的 Python interpereter 编译的 msvcrXX.dll 版本

python-3.x - 为什么 print ('a' > 'b' ) False 而 print ('a' > 'A' ) True?

python - 如何删除 python-igraph 中的边缘属性

json - 使用 Python 将数据框转换为 JSON

python - 更改数据框中多个位置的最快方法

python - Plotly地理映射,设置locationmode ="IN"