【发布时间】:2021-12-24 23:55:25
【问题描述】:
我正在从这样的 API 请求数据:
output = requests.get(url=url, auth=oauth, headers=headers, data=payload)
output_data_test = output.json()
output_data_test["customers"][0]["id"]
'1'
当我这样做时,值不会被分配:
combined_output_temp_df = output_data_test["customers"][0]["id"]
combined_output_temp_df
Empty DataFrame
我做错了什么?
这是我创建数据框的方式:
combined_output_temp_df = pd.DataFrame(
columns = [
"id",
"first_name",
"last_name",
"middle_initial",
"email",
### - Preferences
"preference_email_invoices",
"preference_print_invoices",
"preference_exclude_from_insurance_auto_enroll_on",
###
"username",
"created_at",,
"blocked_payments",
### - Phone Numbers
"phone_number_id",
"phone_number_primary",
### - Mailing Address
"mailing_address_id",
"mailing_address_address1",
"mailing_address_address2",
"mailing_address_city",
"mailing_address_state",
"mailing_address_latitude",
### - Addresses
"address_id",
"address_address1",
"address_address2",
"address_city",
"address_state",
"address_invalid_data",
"address_label"
###
]
)
以下是 JSON 的大致样子:
{
'customers': [
{
'id': '1',
'first_name': 'James',
'last_name': 'Test',
'middle_initial': '',
'email': 'jamesemail@test.com',
'preferences': {
'email_invoices': False,
'print_invoices': False,
'exclude_from_insurance_auto_enroll_on': None
},
'username': jamestesting,
'created_at': '2021-03-11T13:00:00.404-05:00',
'blocked_payments': False,
'phone_numbers': [
{
'id': '234234asdf',
'primary': True
},
{
'id': '8438c19a',
'primary': False
}
], 'mailing_address': {
'id': '431fe0b2',
'address1': '15777 Fake Blvd',
'address2': 'Lot 196',
'city': 'Testing',
'state': 'TX',
'latitude': None
}, 'addresses': [
{
'id': '431fe0b2',
'address1': '157 whatever',
'address2': 'Lot 196',
'city': 'Sacramento',
'state': 'NY',
'invalid_data': False,
'label': 'Home'
}
]
}
]
}
有些客户有多个电话号码,有些客户有 0 个电话号码。与此处未找到的邮寄地址和其他属性相同。当我尝试使用explode时,它给了我一条错误消息
【问题讨论】:
-
根据您共享的代码 - 您不是在创建数据框。
-
我在代码的前面创建它。其中一列称为“id”。
-
您没有将数据传递给
pd.DataFrame,因此它正在创建一个空的df。你想用这 5 列将output_data_test加载到熊猫中吗?如果是这样,请分享一些output_data_test的样本。 -
我只想要ID列
-
df = pd.json_normalize(output_data_test, record_path=['customers'])[['id']]?
标签: python json python-3.x pandas api