首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python从TXT组织数据并写入csv

Python从TXT组织数据并写入csv
EN

Stack Overflow用户
提问于 2021-12-28 22:58:59
回答 2查看 64关注 0票数 -1

我有一个这种格式的数据转储:

代码语言:javascript
运行
复制
[
{
      "vaultId": "429d60edc11df0a576cd9173e8c0d0de8792538862db0122848b87a96ecdf537",
      "loanSchemeId": "MIN150",
      "ownerAddress": "df1q7crh6d3dscj3sajpklehpnwdwhvs0l0jm9fr7s",
      "state": "inLiquidation",
      "liquidationHeight": 1488540,
      "batchCount": 2,
      "liquidationPenalty": 5,
      "batches": [
        {
          "index": 0,
          "collaterals": [
            "282.34948388@DFI"
          ],
          "loan": "6.38045570@BABA"
        },
        {
          "index": 1,
          "collaterals": [
            "300.16175126@DFI"
          ],
          "loan": "0.26745972@GOOGL"
        }
      ]
    },
]

我已经写到一个txt,我试图使用Pandas制作一个数据文件,然后用这个代码写到csv,但是我收到了这个错误ValueError: Length mismatch: Expected axis has 1729 elements, new values have 5 elements。这是我用来形成数据格式的代码,非常感谢。

代码语言:javascript
运行
复制
import pandas as pd
import simplejson as json

df = pd.read_json('auctions.txt')
df[['index', 'collaterals', 'loan']] = df.batches.apply(pd.Series)

编辑:这是我修改代码时的错误。

代码语言:javascript
运行
复制
    Traceback (most recent call last):
  File "c:\Users\iones\Documents\DeFI Chain Auction Bot\start.py", line 3, in <module>
    df = pd.read_json('auctions.json')
  File "C:\Users\iones\Documents\DeFI Chain Auction Bot\.venv\lib\site-packages\pandas\util\_decorators.py", line 207, in wrapper
    return func(*args, **kwargs)
  File "C:\Users\iones\Documents\DeFI Chain Auction Bot\.venv\lib\site-packages\pandas\util\_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "C:\Users\iones\Documents\DeFI Chain Auction Bot\.venv\lib\site-packages\pandas\io\json\_json.py", line 614, in read_json
    return json_reader.read()
  File "C:\Users\iones\Documents\DeFI Chain Auction Bot\.venv\lib\site-packages\pandas\io\json\_json.py", line 748, in read
    obj = self._get_object_parser(self.data)
  File "C:\Users\iones\Documents\DeFI Chain Auction Bot\.venv\lib\site-packages\pandas\io\json\_json.py", line 770, in _get_object_parser
    obj = FrameParser(json, **kwargs).parse()
  File "C:\Users\iones\Documents\DeFI Chain Auction Bot\.venv\lib\site-packages\pandas\io\json\_json.py", line 885, in parse
    self._parse_no_numpy()
  File "C:\Users\iones\Documents\DeFI Chain Auction Bot\.venv\lib\site-packages\pandas\io\json\_json.py", line 1140, in _parse_no_numpy
    loads(json, precise_float=self.precise_float), dtype=None
ValueError: Expected object or value
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-12-31 00:30:13

用这个来修正

代码语言:javascript
运行
复制
def jsontocsv():
    df = pd.read_json('auctions.json')
    df = df.explode('batches')
    df[['index', 'collaterals', 'loan']] = df.batches.apply(pd.Series)
    print(df[['vaultId', 'liquidationHeight', 'index', 'collaterals','loan']])
    df.to_csv('auctions.csv')

`

票数 0
EN

Stack Overflow用户

发布于 2021-12-28 23:41:17

使用read_json加载JSON,然后将批处理字典转换为列

代码语言:javascript
运行
复制
import pandas as pd

df = pd.read_json('data.json')
df[['index', 'collaterals', 'loan']] = df.batches.apply(pd.Series)

如果您想要把担保品分成几行

代码语言:javascript
运行
复制
df = df.explode('collaterals')

输出

代码语言:javascript
运行
复制
print(df[['vaultId', 'liquidationHeight', 'index', 'collaterals', 'loan']])

                                             vaultId  liquidationHeight  index        collaterals              loan
0  6af21886adcb92c4669a8a901975eb9b9d5544c67e4292...            1489770      0  2326.00000000@DFI  2.24978028@GOOGL
1  6af21886adcb92c4669a8a901975eb9b9d5544c67e4292...            1489770      1  2326.00000000@DFI  2.24978028@GOOGL

编辑:

根据您刚才所说的,数据似乎损坏了,即以无效的JSON格式。请从源头上改正。我使用了下面的数据样本。

代码语言:javascript
运行
复制
{
  "vaultId": "6af21886adcb92c4669a8a901975eb9b9d5544c67e429267841491649810958a",
  "ownerAddress": "df1qhh9ek2d98mxjeh58xdsfj7ad2k7q4d4kwshsxr",
  "liquidationHeight": 1489770,
  "batchCount": 2,
  "batches": [
    {
      "index": 0,
      "collaterals": [
        "2326.00000000@DFI"
      ],
      "loan": "2.24978028@GOOGL"
    },
    {
      "index": 1,
      "collaterals": [
        "2326.00000000@DFI"
      ],
      "loan": "2.24978028@GOOGL"
    }
  ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70513412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档