Python 熊猫:将字典列转换为键和值列
我有一个这样的数据帧Python 熊猫:将字典列转换为键和值列,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,我有一个这样的数据帧 df = pd.DataFrame( {"colA": [1], "colB": [[{"code1": 17}, {"code2": 18}, {"code3": 19}]] } ) >> df col
df = pd.DataFrame(
{"colA": [1],
"colB": [[{"code1": 17}, {"code2": 18}, {"code3": 19}]]
}
)
>> df
colA colB
0 1 [{'code1': 17}, {'code2': 18}, {'code3': 19}]
使用explode
I将列表转换为行
>> 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
我无法继续用于提取列,创建元组列表并传递给数据帧
构造函数,以便在分解后通过创建默认索引进行正确连接
:
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
另一个想法是:
L = [(a, *list(x.items())[0]) for a, b in zip(df['colA'], df['colB']) for x in b]
df = pd.DataFrame(L, columns=['colA','colB_key','colB_value'])
print (df)
colA colB_key colB_value
0 1 code1 17
1 1 code2 18
2 1 code3 19