在 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
df =pd.DataFrame(eval(res))
print(df.head())
df.to_csv('data.csv',index=False)
这是我的代码,用于将我需要的数据转换为 csv 文件,但因为数据是字典,所以我无法按照我想要的方式获取大约 70 个其他字典的列表。
我假设图像中的所有 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 |