Преобразование списка в Float из Json в Python - PullRequest
0 голосов
/ 25 июня 2018

У меня проблема, я хочу преобразовать свой список из моего файла JSON. Когда я пытаюсь преобразовать файл меньшего размера с тем же форматом, результат хороший, как я ожидал. Но когда я изменяю данные большим файлом и тем же форматом, я получаю сообщение об ошибке, подобное этому:

не удалось преобразовать строку в число с плавающей точкой: '-2.942-2.942', но после того, как я проверил, в моем файле json большего размера нет строки '-2.942-2.942'. Итак, мой вопрос: это проблема с моей оперативной памятью, из-за которой мой компьютер не может преобразовать список в плавающее?

У меня есть данные JSON:

    {
    "En": -2.942,
    "atoms": [
        {
            "type": "Br",
            "xyz": [
                -4.0223,
                0.5054,
                -0.022
            ]
        },
        {
            "type": "Cl",
            "xyz": [
                3.9221,
                0.4837,
                0.009
            ]
        },
        {
            "type": "N",
            "xyz": [
                0.0218,
                -0.5066,
                -0.0031
            ]
        },
        {
            "type": "C",
            "xyz": [
                -1.1862,
                0.3061,
                0.0071
            ]
        },
        {
            "type": "C",
            "xyz": [
                1.2137,
                0.3338,
                0.0107
            ]
        },
        {
            "type": "C",
            "xyz": [
                -2.4113,
                -0.5886,
                0.0255
            ]
        },
        {
            "type": "C",
            "xyz": [
                2.4622,
                -0.5338,
                -0.0271
            ]
        },
        {
            "type": "H",
            "xyz": [
                -1.2118,
                0.9549,
                -0.8777
            ]
        },
        {
            "type": "H",
            "xyz": [
                -1.1963,
                0.9561,
                0.8911
            ]
        },
        {
            "type": "H",
            "xyz": [
                1.2242,
                0.9489,
                0.9188
            ]
        },
        {
            "type": "H",
            "xyz": [
                1.2105,
                1.0092,
                -0.854
            ]
        },
        {
            "type": "H",
            "xyz": [
                0.0291,
                -1.1038,
                -0.8296
            ]
        },
        {
            "type": "H",
            "xyz": [
                -2.46,
                -1.2431,
                -0.8498
            ]
        },
        {
            "type": "H",
            "xyz": [
                -2.4697,
                -1.1924,
                0.9358
            ]
        },
        {
            "type": "H",
            "xyz": [
                2.5076,
                -1.2058,
                0.8359
            ]
        },
        {
            "type": "H",
            "xyz": [
                2.5034,
                -1.1368,
                -0.9398
            ]
        }
    ],
    "id": 16164,
    "shapeM": [
        146.89,
        7.96,
        0.86,
        0.63,
        0.1,
        0.01,
        0.0,
        1.5,
        0.03,
        0.07,
        0.0,
        0.06,
        0.02,
        0.02
    ]
}

А это мой скрипт на python:

import numpy as np
import pandas as pd
import json
from itertools import groupby
from operator import itemgetter

with open('testdata.json') as f:
    data = json.load(f)

grouper = itemgetter("En")
total = 0
quantity = 0
for key, grp in groupby(sorted(data, key = grouper),grouper):
    total = float(''.join(map(str, [item["En"] for item in grp]))) #converting list to str to float
    quantity += 1
average = total/quantity
print(average,total,quantity)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...