假设我有一个如下数据框,如何将值(大于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
答案 0 :(得分:5)
我认为您可以将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