我希望我能清楚地描述這個問題。我有一個帶有 2 列(日期、人員)的 pandas df,如下所示:
date person
0 2002-09-04 [{'name':'anna', 'weight':'2.9', 'hospital':'x'}, {'name': 'jacob', ...}, ...]
1 2002-10-16 [{'name':'lynn', 'weight':'3.0', 'hospital':'y'}, {'name': 'tony', ...}, ...]
2 ...
3
并想把它變成這樣:
date name weight hospital
0 2002-09-04 anna 2.9 x
1 2002-09-04 jacob ... ...
.
.
.
n 2002-10-16 lynn 3.0 y
n1 2002-10-16 tony ... ...
原來有更多的列有重要資訊。因此,我想創建一個新的 df 以使“人”中的資料更易于訪問。我嘗試逐行附加字典串列。
到目前為止,我有:
df_person = pd.DataFrame()
for row, _ in enumerate(df['person']):
df_person = df_person.append(df['person'][row], ignore_index = True, sort = False)
這給了我名稱、體重和醫院作為列的df。但是我現在怎樣才能為每個條目保留正確的日期呢?
uj5u.com熱心網友回復:
您可以explode使用您的字典串列并將它們轉換為列pandas.json_normalize:
out = (df
.explode('person', ignore_index=True)
.pipe(lambda d: d.join(pd.json_normalize(d.pop('person'))))
)
輸出:
date name weight hospital
0 2002-09-04 anna 2.9 x
1 2002-09-04 jacob NaN NaN
2 2002-10-16 lynn 3.0 y
3 2002-10-16 tony NaN NaN
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/519475.html
標籤:Python熊猫数据框
下一篇:從帶有日期的列生成周
