簡體   English   中英

將列表的 Pandas 列替換為相應的 dict 值

[英]Replace a Pandas column of list with corresponding dict values

我有一個像這樣的dictdataframe

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.

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