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