python - 如何基于包含值的列作为列表连接数据框
问题描述
我有一个数据框
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 连接,但无法合并回来,而且由于列表中的值不同,它看起来也不正确。
解决方案
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]
推荐阅读
- neural-network - 优化器步骤后网络的权重保持不变
- java - 你如何显示用户在移动数独游戏中按下的位置?
- python - 如果一行具有空值,则使用另一行合并数据框
- c# - 使用 URP Unity 2020.1.5 阻止武器夹入飞机
- reactjs - 为什么我的 React 应用程序在尝试从构建文件夹提供服务时会导致空白页面?
- java - “catch (Exception NullPointerException)” 和写“catch (NullPointerException e)” 一样吗?
- actions-on-google - Google Action 未部署
- xaml - 在 XAML 中为 viewmodel 构造函数添加复杂参数
- laravel - 如何在多个 gurds ( auth:web, auth:admin ) 中实现 password.confirm 中间件?
- reactjs - 如何在 material-ui Appbar 中居中徽标和文本?