熊猫:将字典列转换为键和值列

时间:2020-10-16 09:16:51

标签: python pandas dataframe dictionary

我有一个这样的数据框

df = pd.DataFrame(
                   {"colA": [1],
                    "colB": [[{"code1": 17}, {"code2": 18}, {"code3": 19}]]
                   }
                  )
>> df

    colA    colB
0   1       [{'code1': 17}, {'code2': 18}, {'code3': 19}]

使用explode将列表转换为行

>> df.explode('colB')

    colA    colB
0   1       {'code1': 17}
0   1       {'code2': 18}
0   1       {'code3': 19}

我想将colB转换为键和值列

colA  colB_key  colB_value
 1      code1      17
 1      code2      18   
 1      code3      19   

我无法继续前进

1 个答案:

答案 0 :(得分:1)

使用DataFrame.pop提取列,创建元组列表并传递给DataFrame构造函数,以DataFrame.join正确连接,在{{1}之后由DataFrame.reset_index创建默认索引}:

explode

另一个想法:

df = df.explode('colB').reset_index(drop=True)

df1 = pd.DataFrame([list(x.items())[0] for x in df.pop('colB')], 
                   columns=['colB_key','colB_value'])
df = df.join(df1)
print (df)
   colA colB_key  colB_value
0     1    code1          17
1     1    code2          18
2     1    code3          19