如何在pandas DataFram中展平JSON数组元素

2024-04-16 20:50:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个输入数据帧df,如下所示(ID不是1,2,3):

| id    | name                                                                                  |
|-------|---------------------------------------------------------------------------------------|
| a1xy  | [  {  "event": "sports",   "start": "100"},  {  "event": "lunch",  "start": "121" } ] |
| a7yz  | [  {  "event": "lunch",   "start": "109"},  {  "event": "movie",  "start": "97" } ]   |
| bx4y  | [  {  "event": "dinner",   "start": "78"},  {  "event": "sleep",  "start": "25" } ]   |

我想将JSON数组元素展平,这样我的结果输出是:

^{pr2}$

如何在Python中实现这一点?在


Tags: 数据nameeventiddfsleepmoviestart
2条回答

您可以使用pythonjson库来解析带有pandas apply函数的json,并创建一个列表,稍后可以使用pandas concat函数将其转换为dataframe,然后更改该dataframe的索引。在

import json
ll = df.name.apply(lambda row: pd.DataFrame(json.loads(row))).tolist()
new_df = pd.concat(ll)
new_df.index = pd.Series(new_df.index).shift(-1).fillna(0).cumsum()

新Ėdf

^{pr2}$

使用apply(pd.DataFrame)

k= df.name.apply(pd.DataFrame).tolist()

final_df = pd.concat(k)
final_df.index = pd.Series(final_df.index).shift(-1).fillna(0).cumsum()

final_df
    event start
1  sports   100
1   lunch   121
2   lunch   109
2   movie    97
3  dinner    78
3   sleep    25

相关问题 更多 >