我有一个输入DataFrame df,如下所示(ID不是1,2,3):
| id | name.event | name.start |
|-------|------------|------------|
| a1xy | sports | 100 |
| a1xy | lunch | 121 |
| a7yz | lunch | 109 |
| a7yz | movie | 97 |
| bx4y | dinner | 78 |
| bx4y | sleep | 25 |
我想展平JSON数组元素,以便我的结果输出为:
{{1}}
我怎样才能在Python中执行此操作?
答案 0 :(得分:0)
使用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
答案 1 :(得分:0)
你可以使用python json库来解析带有pandas apply函数的JSON并创建一个列表,稍后你可以使用pandas concat函数将其转换为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()
new_df
event start
1.0 sports 100
1.0 lunch 121
2.0 lunch 109
2.0 movie 97
3.0 dinner 78
3.0 sleep 25