我有一个包含以下内容的Json文件(文件名为Double.JSON)

{"OUT":"074531@@@;1-1=29=0;1-2=193=0;1-3=199=0;1-4=403=0;1-5=334=0;1-6=295=0;1-7=999=0;1-8=57=0;1-9=77=0;1-10=166=0;1-11=116=0;1-12=999=0;2-1=9.3=1;2-2=89=0;2-3=203=0;2-4=346=0;2-5=150=0;2-6=54=0;2-7=466=0;2-8=12=0;2-9=34=0;2-10=115=0;2-11=88=0;2-12=629=0;3-1=87=0;3-2=510=0;3-3=845=0;3-4=873=0;3-5=773=0;3-6=563=0;3-7=999=0;3-8=197=0;3-9=260=0;3-10=601=0;3-11=933=0;3-12=999=0;4-1=60=0;4-2=458=0;4-3=644=0;4-4=540=0;4-5=243=0;4-6=351=0;4-7=999=0;4-8=117=0;4-9=201=0;4-10=256=0;4-11=693=0;4-12=999=0;5-1=16=0;5-2=138=0;5-3=174=0;5-4=674=0;5-5=337=0;5-6=152=0;5-7=731=0;5-8=43=0;5-9=53=0;5-10=181=0;5-11=141=0;5-12=999=0;6-1=80=0;6-2=466=0;6-3=552=0;6-4=999=0;6-5=436=0;6-6=416=0;6-7=999=0;6-8=116=0;6-9=257=0;6-10=676=0;6-11=356=0;6-12=873=0;7-1=35=0;7-2=219=0;7-3=257=0;7-4=483=0;7-5=287=0;7-6=220=0;7-7=474=0;7-8=74=0;7-9=77=0;7-10=186=0;7-11=121=0;7-12=999=0;8-1=52=0;8-2=360=0;8-3=410=0;8-4=820=0;8-5=474=0;8-6=410=0;8-7=999=0;8-8=94=0;8-9=145=0;8-10=326=0;8-11=169=0;8-12=999=0;9-1=34=0;9-2=231=0;9-3=325=0;9-4=492=0;9-5=218=0;9-6=318=0;9-7=999=0;9-8=51=0;9-9=59=0;9-10=187=0;9-11=141=0;9-12=999=0;10-1=59=0;10-2=304=0;10-3=575=0;10-4=902=0;10-5=365=0;10-6=492=0;10-7=999=0;10-8=122=0;10-9=208=0;10-10=246=0;10-11=307=0;10-12=999=0;11-1=78=0;11-2=520=0;11-3=902=0;11-4=999=0;11-5=873=0;11-6=712=0;11-7=999=0;11-8=154=0;11-9=273=0;11-10=458=0;11-11=239=0;11-12=999=0;12-1=55=0;12-2=307=0;12-3=314=0;12-4=751=0;12-5=458=0;12-6=436=0;12-7=999=0;12-8=101=0;12-9=157=0;12-10=300=0;12-11=221=0;12-12=483=0;13-1=11=0;13-2=138=0;13-3=181=0;13-4=410=0;13-5=178=0;13-6=133=0;13-7=721=0;13-8=25=0;13-9=28=0;13-10=94=0;13-11=73=0;13-12=999=0;14-1=15=0;14-2=161=0;14-3=208=0;14-4=257=0;14-5=199=0;14-6=165=0;14-7=552=0;14-8=27=0;14-9=42=0;14-10=131=0;14-11=51=0;14-12=999=0"}

并希望提取表值并将其转换为以下的python表.

enter image description here

我试过使用以下Pandas 代码,但它让我胡言乱语.

import json
import pandas as pd

with open("double.json") as f:
    data = json.load(f)

df = pd.DataFrame(data)

print(df)

任何帮助都将不胜感激!

推荐答案

您可以使用defaultdict来简化数据帧的数据生成,依靠正则表达式来拆分数据的行、列和值部分:

import re, json, pandas as pd
from collections import defaultdict

with open("double.json") as f:
    data = json.load(f)

dd = defaultdict(dict)
for r, c, v in re.findall(r'(\d+)-(\d+)=(\d+)', data['OUT']):
    # assuming we want integers:
    dd[int(r)].update({ int(c) : int(v) })
    # otherwise just use dd[r].update({c : v})

df = pd.DataFrame(dd)

输出:

      1    2    3    4    5    6    7    8    9   10   11   12   13   14
1    29    9   87   60   16   80   35   52   34   59   78   55   11   15
2   193   89  510  458  138  466  219  360  231  304  520  307  138  161
3   199  203  845  644  174  552  257  410  325  575  902  314  181  208
4   403  346  873  540  674  999  483  820  492  902  999  751  410  257
5   334  150  773  243  337  436  287  474  218  365  873  458  178  199
6   295   54  563  351  152  416  220  410  318  492  712  436  133  165
7   999  466  999  999  731  999  474  999  999  999  999  999  721  552
8    57   12  197  117   43  116   74   94   51  122  154  101   25   27
9    77   34  260  201   53  257   77  145   59  208  273  157   28   42
10  166  115  601  256  181  676  186  326  187  246  458  300   94  131
11  116   88  933  693  141  356  121  169  141  307  239  221   73   51
12  999  629  999  999  999  873  999  999  999  999  999  483  999  999

Python相关问答推荐

Pandas 在最近的日期合并,考虑到破产

我们可以为Flask模型中的id字段主键设置默认uuid吗

如何使用表达式将字符串解压缩到Polars DataFrame中的多个列中?

Pre—Commit MyPy无法禁用非错误消息

使用密钥字典重新配置嵌套字典密钥名

使用groupby方法移除公共子字符串

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

如何使regex代码只适用于空的目标单元格

在Python中计算连续天数

如何创建引用列表并分配值的Systemrame列

Numpyro AR(1)均值切换模型抽样不一致性

在Python中从嵌套的for循环中获取插值

数据框,如果值在范围内,则获取范围和

如何为需要初始化的具体类实现依赖反转和接口分离?

上传文件并使用Panda打开时的Flask 问题

将数据从一个单元格保存到Jupyter笔记本中的下一个单元格

try 在单个WITH_COLUMNS_SEQ操作中链接表达式时,使用Polars数据帧时出现ComputeError

如何通过特定导入在类中执行Python代码

对包含JSON列的DataFrame进行分组

更新包含整数范围的列表中的第一个元素