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