簡體   English   中英

我可以使用pandas replace函數將多個列中的不同值替換為唯一值嗎?

[英]Can I use pandas replace function to replace different values in multiple columns with unique values?

我有以下簡單問題,假設我有以下數據框:

df = pd.DataFrame({'A': ['foo', 1, 2, 3, 4],
                   'B': [5, 'dude', 7, 8, 9],
                   'C': ['5', '5', 'dude', '5', '5']})
print(df)

     A     B     C
0  foo     5     5
1    1  dude     5
2    2     7  dude
3    3     8     5
4    4     9     5

現在,我想分別用其自己的唯一值替換列A,B和C中的值['foo','dude','dude'] 我能夠使用熊貓replace功能來完成此任務。

df['A'] = df['A'].replace('foo', value = 68 ).astype(float)
df['B'] = df['B'].replace('dude', value = 46).astype(float)
df['C'] = df['C'].replace('dude', value = 86).astype(float)

這行得通,但是我知道以前在我編寫的許多代碼中,存在一種更簡單有效的方法來解決類似問題。 我有一種直觀的感覺,認為有更好的方法可以完成此操作,但是我不確定它可能是什么。

這是我嘗試過的。

dict1={'A':{'foo':68},'B':{'dude': 46}, 'C':{'dude':86}}
dfclean = df.replace(dict1)

但無濟於事。 用它們各自的生產線替換它們是最有效的方法嗎?

編輯:

哇,我是個傻瓜……我在上面寫的解決方案確實有效,我只是打印df,而不是dfclean。 謝謝。

如果您有大量要替換的值,則map()比.replace更快(對我來說是100倍)。 不利的一面是,使用map時,沒有正則表達式可用於替換子字符串-如果需要的話。

看看這是否適合您:

# Map the dictionary to the whole dataframe
df= df.map(dict1).fillna(df)

如果未替換該行,則在此處使用fillna可以防止出現NaN。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM