在 csv 文件中显示 json 字典列表 python

displaying json dict of a list of dictionaries in a csv file python

df =pd.DataFrame(eval(res))
print(df.head())
df.to_csv('data.csv',index=False)

这是我的代码,用于将我需要的数据转换为 csv 文件,但因为数据是字典,所以我无法按照我想要的方式获取大约 70 个其他字典的列表。 在这里,我希望时间戳成为我的第一列,然后是每个 unix 时间步长的 prices/volume 之后的每个键。我怎样才能修改我的代码来实现这个目标?我不需要数据列。

我假设图像中的所有 70 行都是 JSON。

这段代码可以完成工作

df = pd.read_csv(<csv file path>)
new_data = []

for index in df.index:
  row = eval(df.iloc[index, :].values[0])
  new_data.append(row.values())

new_df = pd.DataFrame(new_data, columns = row.keys())
new_df = pd.concat([new_df, df["itemId"]], axis = 1)

在这里,我将每行中的 JSON 对象转换为 Python 字典,然后将其附加到列表中。获得整个列表后,我将其转换为 pandas 数据框。


一个更短的方法,

rows = list(map(eval, df["data"].values.ravel()))
vals = map(dict.values, rows)
new_df = pd.DataFrame(vals, columns = list(rows)[0].keys())
new_df = pd.concat([new_df, df["itemId"]], axis = 1)

我得到的table-

timestamp avgHighPrice avgLowPrice highPriceVolume lowPriceVolume itemId
0 1644192000 74099578 73256019 285 347 13652
1 1644213600 74247533 73363183 145 209 13652
2 1644235200 74056407 73285468 190 230 13652
3 1644256800 73767754 73119554 354 275 13652
4 1644278400 73463445 72694429 374 299 13652