Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:将字典列转换为键和值列_Python_Pandas_Dataframe_Dictionary - Fatal编程技术网

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