[英]Python - Pandas - flatten list of dicts column
You can extract each row into a series and concat them to a dataframe:您可以将每一行提取到一个系列中并将它们连接到一个 dataframe:
import pandas as pd
data = []
for row in range(len(df_ass)):
data.append(pd.Series(df_ass['associations'][row]['order_rows'][0]))
df = pd.concat(data)
With a dataframe like与 dataframe 一样
df = pd.DataFrame({
"associations" :[
'{"order_rows": [{"id": 1, "p_id": 12}, {"id": 2, "p_id": 12}]}',
'{"order_rows": [{"id": 3, "p_id": 13}, {"id": 4, "p_id": 14}, {"id": 5, "p_id": 15}]}'
]
})
you can do你可以做
df = pd.DataFrame(df.associations.map(eval).str.get("order_rows").explode().to_list())
or或者
df = pd.json_normalize(df.associations.map(eval), record_path="order_rows")
to get要得到
id p_id
0 1 12
1 2 12
2 3 13
3 4 14
4 5 15
solved like this:像这样解决:
df=pd.read_csv(fName, sep=",", usecols=["associations"])
list_rows_dicts=[]
for index, row in df.iterrows():
row_dict=eval(row["associations"])
for d in row_dict["order_rows"]:
list_rows_dicts.append(d)
csv_final_df=pd.DataFrame(list_rows_dicts)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.