我有一个预定义的数据帧df1
:
import pandas as pd
df1 = pd.DataFrame(columns = ["id", "col_a","col_b","col_c"])
我有一个json文件:
{'123': {'col_a': 5, 'col_b': "kuku", 'col_c': True}}
或者有时可以是:
{'123': {'col_a': 5, 'col_b': ["kuku", "bubu", "fooo"], 'col_c': True}}
'123'
键是id
的地方。
我想将这些json的数据作为新行添加到我的数据框中,但是如果col_b是一个列表,我希望它是:
id col_a col_b col_c
123 5 kuku True
123 5 bubu True
123 5 fooo True
或将一个热编码器应用于col_b
。
我正在使用pd.json_normalize
,但我也想取消嵌套该列表并添加id值。
请告知执行此操作的最佳方法是什么?
答案 0 :(得分:2)
不是最干净的,但是您可以这样做:
df1 = df1.append(pd.DataFrame(new_json).T
.explode('col_b')
.rename_axis('id')
.reset_index()
)
输出:
id col_a col_b col_c
0 123 5 kuku True
1 123 5 bubu True
2 123 5 fooo True