簡體   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