Pandas dataframe извлекает значение из json, которое было возвращено как содержимое (JSON) из запроса, - PullRequest
1 голос
/ 19 июня 2020

Pandas dataframe извлекает значение из JSON, которое возвращается как содержимое из запроса.

import pandas as pd
import pandas as pd
import json 
import requests
import ast
from pandas.io.json import json_normalize

df['response'] = df.URL.apply(lambda u: requests.get(u).content)

df.head()

b'{"error":0,"short":"http:\\/\\/192.168.42.72\\/ECyKY"}'
b'{"error":0,"short":"http:\\/\\/192.168.42.72\\/IsMgE"}'

Когда мы используем Python без Pandas, мы можем просто использовать:

resp = requests.get(u)
y=resp.json()
print(y)
print(y['short'])

, чтобы сохранить короткое значение как «http://192.168.42.72/ECyKY», потратить часы, пытаясь заставить его работать с Pandas, безуспешно, есть подсказки?

1 Ответ

0 голосов
/ 19 июня 2020

Вместо использования response.get.content напрямую используйте response.get.json, затем используйте Series.str.get, чтобы извлечь значение, соответствующее ключу short, из словаря и затем назначить его новому столбцу short:

df['response'] = df['URL'].apply(lambda u: requests.get(u).json())
df['short'] = df['response'].str.get('short')

# print(df)
                                            response                       short
0  {'error': 0, 'short': 'http://192.168.42.72/EC...  http://192.168.42.72/ECyKY
1  {'error': 0, 'short': 'http://192.168.42.72/Is...  http://192.168.42.72/IsMgE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...