我有一个数据框,column2
其中每一行都有一个字典列表。
import pandas as pd
data = [{"id":1,
"column1":123,
"column2":[{"a":1}, {"b":"X"}, {"c":'2023-01-16'}]}]
df = pd.DataFrame(data)
# id column1 column2
# 1 123 [{'a': 1}, {'b': 'X'}, {'c': '2023-01-16'}]
我正在尝试从要创建的字典中创建三个新列:
#id column1 a b c
# 1 123 1 X 2023-01-16
我试过这个:
df = df.explode(column="column2")
# column1 column2
# 0 123 {'a': 1}
# 0 123 {'b': 'X'}
# 0 123 {'c': '2023-01-16'}
df["column2"].apply(pd.Series)
# 0 1 2
# 0 {'a': 1} {'b': 'X'} {'c': '2023-01-16'}
但我无法让它按照我想要的方式工作。
我该如何解决这个问题?
您可以结合字典的合并(例如与
ChainMap
)和json_normalize
:输出: