【发布时间】:2019-11-14 09:21:57
【问题描述】:
我正在尝试从两个 json 文件中读取一些数据,并找到具有相同名称的用户,然后从他们那里获取特定键的值,但是,其中一个 (data_bvp) 有问题列表中有 100 行和 1 列。 当我将数据框保存为 csv 文件时,我得到了这个
第一个 json 文件如下所示:
{ "Name": "Alex" :["bvp":[1,2,3], "gsr":[3,2,1] ] } , { "Name": "Laura" :["bvp":[2,3,4], "gsr":[3,2,1] ] }
secon jason 文件包含以下元素:
{ "Name" : "Alex" : ["calm" :0 , "tension":1] }, { "Name": "Laura" : ["calm":1, "tesnion":0}
我要去获取具有相同名称的数据,以便从每个 json 文件中获取 bvp 和张力的值并将其保存为 csv 文件。
数据似乎没有以正确的格式保存,例如 [[1,2,3], [2,3,4]] 我可以看到列表如下所示: [1,2,3 , [2,3,4
实际上,我的最终数据集如下所示:
name col1 col2 col3 tension
Alex 1 2 3 1
Laura 2 3 4 0
您知道我的代码的哪一部分有问题吗? 谢谢!
with open('raw_data-export.json') as data_file:
data_bvp = json.loads(data_file.read())
arr_b = list(data_bvp.keys())
with open('v2-1-data-export.json') as data_file_2:
data_tension = json.loads(data_file_2.read())
arr_tension = list(data_tension.keys())
matches =[]
for i in arr_b:
for j in arr_tension:
if i == j:
matches.append(i)
print("MATCHES", matches)
bvps = []
tension = []
for b in matches:
bvps.append(data_bvp[b]['bvp'])
# PROBLEM
for t in matches:
tension.append(data_tension[t]['pre']['tense'])
bvp_data_frame = pd.DataFrame(bvps)
bvp_data_frame.to_csv('./bvp.csv')
【问题讨论】:
-
没有您的 json 文件样本,很难回答
-
编辑您的问题以添加示例。每个json几行就够了,只要确保使用你的代码我们就能看到问题
-
第二行的 data_b 必须是 data_bvp 吧?
-
@JissRaphel 是的!我编辑了问题
-
您可以只使用 json_load 并使用 pandas.io.json 中的 json_normalize()。检查stackoverflow.com/questions/21104592/json-to-pandas-dataframe