[英]Parse list of dicts from a pandas Series into columns
我有一個包含字典列表的 pandas 系列。 我想用某些條件解析字典的內容並將結果存儲到新列中。
以下是一些要處理的數據:
import pandas as pd
df = pd.DataFrame({'d': [[{'br': 1, 'ba': 1, 'r': 100},
{'ba': 1, 'r': 80},
{'br': 2, 'ba': 1, 'r': 150},
{'br': 1, 'ba': 1, 'r': 90}],
[{'br': 1, 'ba': 1, 'r': 100},
{'ba': 1, 'r': 80},
{'br': 2, 'ba': 1, 'r': 150}]],
'id': ['xxas', 'yxas'],
'name': [A, B]
})
我想用一些條件邏輯來解析每本字典的內容。 檢查列表中的每個字典,並將列命名為鍵br
和ba
。 獲取r
key
的value
作為列值分配。 如果未找到密鑰, br
在此示例中,將0
指定為值。 預計 output:
id br ba r name
xxas 1 0 100 A
xxas 0 1 80 A
xxas 2 1 150 A
xxas 1 1 90 A
yxas 1 1 100 B
yxas 0 1 80 B
yxas 2 1 150 B
從您的DataFrame
中,我們首先將列id
和name
設置為索引,如下所示:
df = df.set_index(['id', 'name'])
然后,我們可以使用concat來獲得預期的結果:
pd.concat(df.d.apply(pd.DataFrame).tolist(), keys=df.index).reset_index(level=[0, 1]).reset_index(drop=True).fillna(0).rename(columns={'level_0': 'id', 'level_1': 'name'})
Output:
id name br ba r
0 xxas A 1.0 1 100
1 xxas A 0.0 1 80
2 xxas A 2.0 1 150
3 xxas A 1.0 1 90
4 yxas B 1.0 1 100
5 yxas B 0.0 1 80
6 yxas B 2.0 1 150
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.