[英]Replace non-zero values in a pandas dataframe with 1
我有一个熊猫数据框“结果”。 此数据框中的属性之一是``交易'',如果它是非现金交易,则包含类似0的值,如果交易是现金交易,则包含一些实数。此属性如下所示:
result['transaction'] = [0,0,0,23.2,432,12,0,0,56.4]
我想更改此属性的值,以便将所有非零值替换为1。因此,我得到的属性应如下所示:
result['transaction'] = [0,0,0,1,1,1,0,0,1]
我怎样才能做到这一点?
另一个选择是使用astype
转换为bool
,然后转换为int
。
df.astype(bool).astype(int)
哪个输出
transaction
0 0
1 0
2 0
3 1
4 1
5 1
6 0
7 0
8 1
以我的经验,这种方法已被证明非常快。
原始数据框:
df
col1
0 0.0
1 0.0
2 0.0
3 23.2
4 432.0
5 12.0
6 0.0
7 0.0
8 56.4
df.where
您可以使用df.where
进行过滤和分配:
df.col1 = df.where(df.col1 == 0, 1)
df
col1
0 0.0
1 0.0
2 0.0
3 1.0
4 1.0
5 1.0
6 0.0
7 0.0
8 1.0
您还可以将boolean indexing
与更简单的谓词一起使用:
df[df.col1 != 0] = 1
df
col1
0 0.0
1 0.0
2 0.0
3 1.0
4 1.0
5 1.0
6 0.0
7 0.0
8 1.0
df.map
df[df.col1.map((0).__ne__)] = 1
df
col1
0 0.0
1 0.0
2 0.0
3 1.0
4 1.0
5 1.0
6 0.0
7 0.0
8 1.0
请注意,对于每种方法,如果要摆脱输出的浮点部分,都可以添加.astype(int)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.