首页 > 解决方案 > 如何基于包含值的列作为列表连接数据框

问题描述

我有一个数据框

df1:

df=pd.DataFrame([[1,[1, 2]],
               [2,[3, 4]],
               [3,[5, 6,1,1]]],
              columns=['person','brand_id'])

另一个具有brand_id品牌名称的数据框是

cars={1:'BMW',2:'HONDA',3:'HYUNDAI',4:'KIA',5:'FORD',6:'TESLA'}
df2=pd.DataFrame(list(cars.items()),columns = ['id','brand_name'])

我需要替换/加入列brand_id,以便它被df2中的品牌名称替换:

输出应该看起来像

输出图像

我尝试将 brand_id 拆分为多个列,然后与 df2 连接,但无法合并回来,而且由于列表中的值不同,它看起来也不正确。

标签: pythonlistdataframejoin

解决方案


cars您可以使用嵌套列表理解和字典查找直接从字典中映射它

df['brand_name'] = [[cars[k] for k in row if cars.get(k)] for row in df.brand_id]
print(df)

   person      brand_id               brand_name
0       1        [1, 2]             [BMW, HONDA]
1       2        [3, 4]           [HYUNDAI, KIA]
2       3  [5, 6, 1, 1]  [FORD, TESLA, BMW, BMW]

推荐阅读