【问题标题】:How to join dataframes based on column containing value as a list如何基于包含值的列作为列表连接数据框
【发布时间】:2020-02-17 02:09:30
【问题描述】:

我有一个数据框

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 中的品牌名称替换:

输出应该是这样的

output image

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

【问题讨论】:

    标签: python list dataframe join


    【解决方案1】:

    您可以使用嵌套列表理解和字典查找直接从 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]
    

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      相关资源
      最近更新 更多