Как преобразовать построчные данные фрейма данных с именем столбца в качестве ключа, а данные строки в значение в json, используя python - PullRequest
0 голосов
/ 27 сентября 2019

Input dataframe df is attached

У меня возникла проблема при преобразовании построчных данных кадра данных с именем столбца в качестве ключа и данными строки в качестве значения.Я хочу передать этот строковый JSON другому API в качестве входных данных.Я не могу получить эти данные json.

for row in df.iterrows():
    out =row.to_json(orient='records',force_ascii=False)[1:-1].replace('},{', '} {')
    r = requests.post(url, headers=headers, data=out.encode('utf-8'))
    print(r.json())

Я хочу желаемый вывод json в прикрепленном формате Desired output of the json

Ответы [ 3 ]

0 голосов
/ 28 сентября 2019

Похоже, что ваш целевой формат данных - JSON , разделенный символом новой строки.В pandas вы можете преобразовать ваш фрейм данных в файл JSON с разделителями новой строки, используя to_json() метод фрейма данных с параметром lines равным True:

Часть подготовки данных:

import pandas as pd
import json

data_json = [
    {
        'C_ID' : '1',
        'Latlong' : {
            '__type' : 'GeoPoint',
            'latitude' : [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
        }
    },
    {
        'C_ID' : '2',
        'Latlong' : {
            '__type' : 'GeoPoint',
            'latitude' : [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
        }
    },
    {
        'C_ID' : '3',
        'Latlong' : {
            '__type' : 'GeoPoint',
            'latitude' : [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
        }
    }]

data = pd.read_json(json.dumps(data_json))
print(data) 

Вывод:

   C_ID                                            Latlong
0     1  {'__type': 'GeoPoint', 'latitude': [[1, 2], [3...
1     2  {'__type': 'GeoPoint', 'latitude': [[1, 2], [3...
2     3  {'__type': 'GeoPoint', 'latitude': [[1, 2], [3...

Запись кадра данных в файл json в формате новой строки:

data.to_json(path_or_buf='/path/to/target/json/file.json', # path to json file to write data
             orient='records',
             lines=True)

Вывод данных файла:

{"C_ID":1,"Latlong":{"__type":"GeoPoint","latitude":[[1,2],[3,4],[5,6],[7,8],[9,10]]}}
{"C_ID":2,"Latlong":{"__type":"GeoPoint","latitude":[[1,2],[3,4],[5,6],[7,8],[9,10]]}}
{"C_ID":3,"Latlong":{"__type":"GeoPoint","latitude":[[1,2],[3,4],[5,6],[7,8],[9,10]]}}
0 голосов
/ 28 сентября 2019

Попробуйте:

import requests
import pandas as pd
def call_api(json_data):
    r = requests.post(url, headers=headers, data=out)
    print(r.json())

df.apply(lambda x:call_api(x.to_json()),axis=1)

Надеюсь, это поможет!

0 голосов
/ 27 сентября 2019

Вы можете попробовать это, надеюсь, это будет работать:

import pandas as pd
df = pd.read_csv(your file path)
df.to_json()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...