将JSON传输到DataFram

2024-05-14 20:45:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从两个json文件中读取一些数据,找到同名的用户,然后从他们那里获取特定键的值,但是,其中一个(data_bvp)有一个问题,列表中有100行和1列。 当我将数据帧保存为csv文件时,我得到了 enter image description here

第一个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和tension的值,并将其保存为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')

Tags: 文件csv数据nameinjsonfordata
1条回答
网友
1楼 · 发布于 2024-05-14 20:45:42

我创建了测试数据帧,如下所示:

t1 = '''[
    {"Name": "Alex",  "bvp": [1,2,3], "gsr": [3,2,1]},
    {"Name": "Laura", "bvp": [2,3,4], "gsr": [3,2,1]} ]'''
df1 = pd.DataFrame(json.loads(t1))    
t2 = '''[
    {"Name": "Alex",  "calm": 0, "tension": 1},
    {"Name": "Laura", "calm": 1, "tension": 0} ]'''
df2 = pd.DataFrame(json.loads(t2))

(略有更改,因为原始的JSON字符串导致了一个错误)。你知道吗

第一步是创建一个工作数据帧bvp列的中断 分为单独的列,带有原始索引:

wrk = pd.DataFrame(df1.bvp.tolist(), index=df1.index,
    columns=['col1', 'col2', 'col3'])

结果是:

   col1  col2  col3
0     1     2     3
1     2     3     4

要获得最终结果,请运行:

df1.join(wrk).drop(columns=['bvp', 'gsr']).merge(df2, on='Name')

注意操作顺序:

  • 首先,df1与wrk连接(在索引上)。你知道吗
  • 然后删除bvpgsr列。你知道吗
  • 最后的结果是合并d和df2(在名称)。你知道吗

相关问题 更多 >

    热门问题