我正在尝试从json中取出键和值,以在pandas中分隔行
我有:
|---------------------|------------------|
| session | scoring |
|---------------------|------------------|
| session1 | {id1:scoring1, |
| | id2:scoring2, |
| | id3:scoring3} |
|---------------------|------------------|
| session2 | {id4:scoring4, |
| | id5:scoring5} |
|---------------------|------------------|
我想得到:
|---------------------|------------------|---------------------|------------------|
| session | scoring | id | score |
|---------------------|------------------|---------------------|------------------|
| session1 | {id1:scoring1, | id1 | score1 |
| | id2:scoring2, | | |
| | id3:scoring3} | | |
|---------------------|------------------|---------------------|------------------|
| session1 | {id1:scoring1, | id2 | score2 |
| | id2:scoring2, | | |
| | id3:scoring3} | | |
|---------------------|------------------|---------------------|------------------|
| session1 | {id1:scoring1, | id3 | score3 |
| | id2:scoring2, | | |
| | id3:scoring3} | | |
|---------------------|------------------|---------------------|------------------|
| session2 | {id4:scoring4, | id4 | score4 |
| | id5:scoring5} | | |
|---------------------|------------------|---------------------|------------------|
| session2 | {id4:scoring4, | id5 | score5 |
| | id5:scoring5} | | |
|---------------------|------------------|---------------------|------------------|
我使用的代码:(迭代行和json,如果id首先在json中,那么将其放在相邻的单元格中,否则创建新行并附加到df)
append_index = df.shape[0]
for index, row in df.iterrows():
append_now = False
for key, val in row['scoring'].items():
if append_now:
row['id'] = key
row['score'] = val
df.loc[append_index] = row
append_index += 1
else:
df.loc[index,'id'] = key
df.loc[index, 'score'] = val
append_now = True
问题在于df由6行以上的mlm行组成,只迭代20行需要半小时。但当我限制前1k行时,它运行良好
不确定这是否更好,但您可能想尝试一下:
样品架
看起来像
这个
复制您的结果
但是可能表现更好
相关问题 更多 >
编程相关推荐