3 回答

TA貢獻1805條經驗 獲得超9個贊
您可以使用map,它可以映射字典或自定義函數(shù)中的值。
假設這是您的df:
ID First_Name Last_Name
0 103 a b
1 104 c d
創(chuàng)建字典:
fnames = {103: "Matt", 104: "Mr"}
lnames = {103: "Jones", 104: "X"}
和地圖:
df['First_Name'] = df['ID'].map(fnames)
df['Last_Name'] = df['ID'].map(lnames)
結果將是:
ID First_Name Last_Name
0 103 Matt Jones
1 104 Mr X
或使用自定義函數(shù):
names = {103: ("Matt", "Jones"), 104: ("Mr", "X")}
df['First_Name'] = df['ID'].map(lambda x: names[x][0])

TA貢獻1821條經驗 獲得超6個贊
這個問題可能仍然經常被探訪,因此值得為卡西斯先生的回答提供補充。可以對dict內置類進行子類化,以便為“缺失”鍵返回默認值。此機制對熊貓有效。但請參見下文。
這樣就可以避免關鍵錯誤。
>>> import pandas as pd
>>> data = { 'ID': [ 101, 201, 301, 401 ] }
>>> df = pd.DataFrame(data)
>>> class SurnameMap(dict):
... def __missing__(self, key):
... return ''
...
>>> surnamemap = SurnameMap()
>>> surnamemap[101] = 'Mohanty'
>>> surnamemap[301] = 'Drake'
>>> df['Surname'] = df['ID'].apply(lambda x: surnamemap[x])
>>> df
ID Surname
0 101 Mohanty
1 201
2 301 Drake
3 401
可以通過以下方式更簡單地完成同一件事。對于getdict對象的方法使用'default'參數(shù),就不必對dict進行子類化。
>>> import pandas as pd
>>> data = { 'ID': [ 101, 201, 301, 401 ] }
>>> df = pd.DataFrame(data)
>>> surnamemap = {}
>>> surnamemap[101] = 'Mohanty'
>>> surnamemap[301] = 'Drake'
>>> df['Surname'] = df['ID'].apply(lambda x: surnamemap.get(x, ''))
>>> df
ID Surname
0 101 Mohanty
1 201
2 301 Drake
3 401
添加回答
舉報