我有一个这样的数据框
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
我无法继续前进
答案 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