繁体   English   中英

将熊猫数据框中的非零值替换为1

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM