[英]Replace a Pandas column of list with corresponding dict values
我有一個像這樣的dict
和dataframe
。
dct = {1:'a',2:'b',3:'c',4:'d'}
df = pd.DataFrame(
{
"id":[1,2,3],
"vals":[[1,2,3],[2,4,2],[1,3,2]]
}
)
我想要的 dataframe
id vals
0 1 [a, b, c]
1 2 [b, d, b]
2 3 [a, c, b]
目前的方法
final = []
for row in df.itertuples():
new = []
for i in range(len(row.vals)):
new.append(dct[row.vals[i]])
final.append({'id': row.id,'vals': new})
df = pd.DataFrame(final)
有沒有更好更快的方法來做到這一點? 任何幫助將不勝感激
dct = {1:'a',2:'b',3:'c',4:'d'}
嘗試使用apply()
和列表理解:
df['vals']=df['vals'].apply(lambda x:[dct[y] for y in x])
Output 的df
:
id vals
0 1 [a, b, c]
1 2 [b, d, b]
2 3 [a, c, b]
您可以嘗試分解系列,map 的值,然后聚合回來:
df['vals'] = (df['vals'].explode()
.map(dct)
.groupby(level=0)
.agg(list)
)
Output:
id vals
0 1 [a, b, c]
1 2 [b, d, b]
2 3 [a, c, b]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.