pandas - 如何有条件地替换pandas数据框

标签 pandas replace

假设我有一个如下的数据框,如何将大于 0.6 的值替换为 1,将小于 0.3 的值替换为 0,并将所有其他值替换为 -1

        aaa       bbb       ccc
0  0.953893  0.977473  0.034157
1  0.693851  0.587930  0.584268
2  0.357185  0.429399  0.937016
3  0.384505  0.670054  0.657566
4  0.782799  0.479501  0.196721
5  0.548724  0.487478  0.277674
6  0.019224  0.426555  0.047267
7  0.746972  0.569147  0.973555
8  0.755425  0.885270  0.825515
9  0.427994  0.013501  0.982629

最佳答案

我认为你可以使用numpy.select使用 DataFrame 构造函数:

m1 = df.values > .6
m2 = df.values < .3
df = pd.DataFrame(np.select([m1,m2], [1,0], default=-1), index=df.index, columns=df.columns)
print (df)
   aaa  bbb  ccc
0    1    1    0
1    1   -1   -1
2   -1   -1    1
3   -1    1    1
4    1   -1    0
5   -1   -1    0
6    0   -1    0
7    1   -1    1
8    1    1    1
9   -1    0    1

另一个带有双 numpy.where 的解决方案:

df = pd.DataFrame(np.where(m1, 1, np.where(m2, 0, -1)), index=df.index, columns=df.columns)
print (df)
   aaa  bbb  ccc
0    1    1    0
1    1   -1   -1
2   -1   -1    1
3   -1    1    1
4    1   -1    0
5   -1   -1    0
6    0   -1    0
7    1   -1    1
8    1    1    1
9   -1    0    1

关于pandas - 如何有条件地替换pandas数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45660286/

相关文章:

javascript - 替换所有谷歌脚本

regex - sed regex 到非贪婪替换?

Javascript/jQuery 查找和替换

python - 如何迭代 Pandas 中的列值并根据同一行中多列的值创建新的观察?

python - 在 Dataframe 中查找每行都有值的列

python - 使用Python提取数据

javascript - 如何使用 jQuery 更改特定文本?

python - 导入json并将所有列转换为字符串

python - 使用正则表达式创建 pandas 列?

python - 用另一个值替换 Pandas 数据框列中的几个值