【问题标题】:How to convert the list dictionary from a column value into column in pandas df?如何将列表字典从列值转换为pandas df中的列?
【发布时间】:2021-06-09 06:08:45
【问题描述】:

我有不同的列,其中一些列包含一个列表,而该列表包含另一个字典。我想将该列表转换为列,但我不确定哪种技术是最好的...

这是我的 df 的外观:

Car      Year       Conv                                                       Cost
BMW      2001       [{'action_type': None, 'value': None}]                   2000
VW       2009       [{'action_type': 'landing_page_view', 'value':'50'}]       5000

这是我希望看到的理想状态

Car      Year       Conv - action_type     Conv - value         Cost      
BMW      2001       None                   None                 2000
VW       2009       landing_page_view      50                   5000

【问题讨论】:

  • 一个问题:Conv 列中的列表实际上是不同的还是错字?一个是 dict 列表,另一个是 dict 列表
  • 是的,这是一个错字...对不起,我更正了
  • @s_khan92 那么每个列表只包含一个字典还是可以包含多个字典?这种情况下的输出是什么?

标签: python pandas list dictionary multidimensional-array


【解决方案1】:

这是一个快速而肮脏的解决方案

df['Conv - Action_type'] = df['Conv'].apply(lambda x: x[0]['action_type'])

【讨论】:

    【解决方案2】:

    这对我有用(假设list 内只有一个dict):

    new = {}
    for row in range(df.shape[0]):
        d = df.loc[row, 'Conv'][0]
        for k in d.keys():
            if 'Conv - ' + k in new.keys():
                new['Conv - ' + k].append(d[k])
            else:
                new['Conv - ' + k] =  [d[k]]
    
    for k,v in new.items():
        df[k] = v
    
    df.drop(columns='Conv', inplace=True)
    df = df[['Car', 'Year', 'Conv - action_type', 'Conv - value', 'Cost']]
    

    【讨论】:

    • @s_khan92 这不是你要找的吗?
    • 嗨。谢谢。另一个解决方案对我来说似乎更好。 :)
    • 欢迎您!确保它更紧凑,但总体上失去了;)
    猜你喜欢
    • 2019-12-31
    • 2020-09-11
    • 2021-04-27
    • 2022-11-02
    • 2022-11-29
    • 2021-11-03
    • 2016-09-17
    • 2018-08-17
    • 2021-11-10
    相关资源
    最近更新 更多