簡體   English   中英

Pandas:將字典列轉換為鍵和值列

[英]Pandas: Dictionary column into key and value column

我有一個這樣的數據框

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   

我無法繼續

使用DataFrame.pop用於提取列,創建的元組的列表,並通過對DataFrame的構造方法,正確的連接通過DataFrame.join默認創建的索引DataFrame.reset_indexexplode

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM