我想知道为什么当我在此数据集上使用 record_path 时会出现关键错误。 它来自 FDA api,我抓取了前两个结果。
data = {
"meta": {
"disclaimer": "Do not rely on openFDA to make decisions regarding medical care. While we make every effort to ensure that data is accurate, you should assume all results are unvalidated. We may limit or otherwise restrict your access to the API in line with our Terms of Service.",
"terms": "https://open.fda.gov/terms/",
"license": "https://open.fda.gov/license/",
"last_updated": "2024-11-15",
"results": {
"skip": 0,
"limit": 2,
"total": 118943
}
},
"results": [
{
"product_ndc": "73647-062",
"generic_name": "MENTHOL, CAMPHOR",
"labeler_name": "Just Brands LLC",
"brand_name": "JUST CBD - CBD AND THC ULTRA RELIEF",
"active_ingredients": [
{
"name": "CAMPHOR (SYNTHETIC)",
"strength": "2 g/100g"
},
{
"name": "MENTHOL",
"strength": "6 g/100g"
}
],
"finished": true,
"packaging": [
{
"package_ndc": "73647-062-04",
"description": "113 g in 1 BOTTLE, PUMP (73647-062-04)",
"marketing_start_date": "20230314",
"sample": false
}
],
"listing_expiration_date": "20251231",
"openfda": {
"manufacturer_name": [
"Just Brands LLC"
],
"spl_set_id": [
"f664eb79-8897-3a49-e053-2995a90a37b4"
],
"is_original_packager": [
true
],
"unii": [
"5TJD82A1ET",
"L7T10EIP3A"
]
},
"marketing_category": "OTC MONOGRAPH DRUG",
"dosage_form": "GEL",
"spl_id": "16c906dd-6989-9a79-e063-6394a90afa71",
"product_type": "HUMAN OTC DRUG",
"route": [
"TOPICAL"
],
"marketing_start_date": "20230314",
"product_id": "73647-062_16c906dd-6989-9a79-e063-6394a90afa71",
"application_number": "M017",
"brand_name_base": "JUST CBD - CBD AND THC ULTRA RELIEF"
},
{
"product_ndc": "0591-4039",
"marketing_end_date": "20250930",
"generic_name": "CLOBETASOL PROPIONATE",
"labeler_name": "Actavis Pharma, Inc.",
"brand_name": "CLOBETASOL PROPIONATE",
"active_ingredients": [
{
"name": "CLOBETASOL PROPIONATE",
"strength": ".05 g/mL"
}
],
"finished": true,
"packaging": [
{
"package_ndc": "0591-4039-46",
"description": "1 BOTTLE in 1 CARTON (0591-4039-46) / 59 mL in 1 BOTTLE",
"marketing_start_date": "20150828",
"marketing_end_date": "20250930",
"sample": false
},
{
"package_ndc": "0591-4039-74",
"description": "1 BOTTLE in 1 CARTON (0591-4039-74) / 125 mL in 1 BOTTLE",
"marketing_start_date": "20150828",
"marketing_end_date": "20250930",
"sample": false
}
],
"openfda": {
"manufacturer_name": [
"Actavis Pharma, Inc."
],
"rxcui": [
"861512"
],
"spl_set_id": [
"907e425a-720a-4180-b97c-9e25008a3658"
],
"is_original_packager": [
true
],
"unii": [
"779619577M"
]
},
"marketing_category": "NDA AUTHORIZED GENERIC",
"dosage_form": "SPRAY",
"spl_id": "33a56b8b-a9a6-4287-bbf4-d68ad0c59e07",
"product_type": "HUMAN PRESCRIPTION DRUG",
"route": [
"TOPICAL"
],
"marketing_start_date": "20150828",
"product_id": "0591-4039_33a56b8b-a9a6-4287-bbf4-d68ad0c59e07",
"application_number": "NDA021835",
"brand_name_base": "CLOBETASOL PROPIONATE",
"pharm_class": [
"Corticosteroid Hormone Receptor Agonists [MoA]",
"Corticosteroid [EPC]"
]
}
]
}
在 results 键下有 2 个嵌套键,分别名为“active_ingredients”和“packaging” 当我正常化时我得到
result = pd.json_normalize(data['results'], record_path=["packaging"],meta=['product_ndc'])
预期的列
package_ndc description marketing_start_date sample marketing_end_date product_ndcs
但是当我将 active_ingredients 添加到 record_path 列表中时,我收到一个关键错误。 对于元来说也是如此。 当我将“brand_name”和“generic_name”等其他列添加到元列表时,我收到一个关键错误。 查看钥匙
这不起作用
result = pd.json_normalize(data['results'], record_path=["packaging","active_ingredients"],meta=['product_ndc','brand_name','generic_name'])
感谢您的帮助
当您指定多个 record_path 条目(如
"packaging"
和 "active_ingredients"
)时,pandas 预计第二个 record_path
("active_ingredients"
) 存在于第一个 record_path ("packaging"
) 的每个元素中,但是,在您的数据中, active_ingredients
不是包装的嵌套属性
这样做可以解决这个问题
import pandas as pd
data = {
"meta": {
"disclaimer": "Do not rely on openFDA to make decisions regarding medical care. While we make every effort to ensure that data is accurate, you should assume all results are unvalidated. We may limit or otherwise restrict your access to the API in line with our Terms of Service.",
"terms": "https://open.fda.gov/terms/",
"license": "https://open.fda.gov/license/",
"last_updated": "2024-11-15",
"results": {
"skip": 0,
"limit": 2,
"total": 118943
}
},
"results": [
{
"product_ndc": "73647-062",
"generic_name": "MENTHOL, CAMPHOR",
"labeler_name": "Just Brands LLC",
"brand_name": "JUST CBD - CBD AND THC ULTRA RELIEF",
"active_ingredients": [
{
"name": "CAMPHOR (SYNTHETIC)",
"strength": "2 g/100g"
},
{
"name": "MENTHOL",
"strength": "6 g/100g"
}
],
"finished": True,
"packaging": [
{
"package_ndc": "73647-062-04",
"description": "113 g in 1 BOTTLE, PUMP (73647-062-04)",
"marketing_start_date": "20230314",
"sample": False
}
],
"listing_expiration_date": "20251231",
"openfda": {
"manufacturer_name": ["Just Brands LLC"],
"spl_set_id": ["f664eb79-8897-3a49-e053-2995a90a37b4"],
"is_original_packager": [True],
"unii": ["5TJD82A1ET", "L7T10EIP3A"]
},
"marketing_category": "OTC MONOGRAPH DRUG",
"dosage_form": "GEL",
"spl_id": "16c906dd-6989-9a79-e063-6394a90afa71",
"product_type": "HUMAN OTC DRUG",
"route": ["TOPICAL"],
"marketing_start_date": "20230314",
"product_id": "73647-062_16c906dd-6989-9a79-e063-6394a90afa71",
"application_number": "M017",
"brand_name_base": "JUST CBD - CBD AND THC ULTRA RELIEF"
},
{
"product_ndc": "0591-4039",
"marketing_end_date": "20250930",
"generic_name": "CLOBETASOL PROPIONATE",
"labeler_name": "Actavis Pharma, Inc.",
"brand_name": "CLOBETASOL PROPIONATE",
"active_ingredients": [
{
"name": "CLOBETASOL PROPIONATE",
"strength": ".05 g/mL"
}
],
"finished": True,
"packaging": [
{
"package_ndc": "0591-4039-46",
"description": "1 BOTTLE in 1 CARTON (0591-4039-46) / 59 mL in 1 BOTTLE",
"marketing_start_date": "20150828",
"marketing_end_date": "20250930",
"sample": False
},
{
"package_ndc": "0591-4039-74",
"description": "1 BOTTLE in 1 CARTON (0591-4039-74) / 125 mL in 1 BOTTLE",
"marketing_start_date": "20150828",
"marketing_end_date": "20250930",
"sample": False
}
],
"openfda": {
"manufacturer_name": ["Actavis Pharma, Inc."],
"rxcui": ["861512"],
"spl_set_id": ["907e425a-720a-4180-b97c-9e25008a3658"],
"is_original_packager": [True],
"unii": ["779619577M"]
},
"marketing_category": "NDA AUTHORIZED GENERIC",
"dosage_form": "SPRAY",
"spl_id": "33a56b8b-a9a6-4287-bbf4-d68ad0c59e07",
"product_type": "HUMAN PRESCRIPTION DRUG",
"route": ["TOPICAL"],
"marketing_start_date": "20150828",
"product_id": "0591-4039_33a56b8b-a9a6-4287-bbf4-d68ad0c59e07",
"application_number": "NDA021835",
"brand_name_base": "CLOBETASOL PROPIONATE",
"pharm_class": [
"Corticosteroid Hormone Receptor Agonists [MoA]",
"Corticosteroid [EPC]"
]
}
]
}
packaging_data = pd.json_normalize(
data['results'],
record_path=["packaging"],
meta=['product_ndc', 'brand_name', 'generic_name']
)
active_ingredients_data = pd.json_normalize(
data['results'],
record_path=["active_ingredients"],
meta=['product_ndc', 'brand_name', 'generic_name']
)
combined_data = pd.merge(
packaging_data,
active_ingredients_data,
on=['product_ndc', 'brand_name', 'generic_name'],
how='outer'
)
print(packaging_data)
print(active_ingredients_data)
print(combined_data)
这给出了
package_ndc description \
0 73647-062-04 113 g in 1 BOTTLE, PUMP (73647-062-04)
1 0591-4039-46 1 BOTTLE in 1 CARTON (0591-4039-46) / 59 mL i...
2 0591-4039-74 1 BOTTLE in 1 CARTON (0591-4039-74) / 125 mL ...
marketing_start_date sample marketing_end_date product_ndc \
0 20230314 False NaN 73647-062
1 20150828 False 20250930 0591-4039
2 20150828 False 20250930 0591-4039
brand_name generic_name
0 JUST CBD - CBD AND THC ULTRA RELIEF MENTHOL, CAMPHOR
1 CLOBETASOL PROPIONATE CLOBETASOL PROPIONATE
2 CLOBETASOL PROPIONATE CLOBETASOL PROPIONATE
name strength product_ndc \
0 CAMPHOR (SYNTHETIC) 2 g/100g 73647-062
1 MENTHOL 6 g/100g 73647-062
2 CLOBETASOL PROPIONATE .05 g/mL 0591-4039
brand_name generic_name
0 JUST CBD - CBD AND THC ULTRA RELIEF MENTHOL, CAMPHOR
1 JUST CBD - CBD AND THC ULTRA RELIEF MENTHOL, CAMPHOR
2 CLOBETASOL PROPIONATE CLOBETASOL PROPIONATE
package_ndc description \
0 0591-4039-46 1 BOTTLE in 1 CARTON (0591-4039-46) / 59 mL i...
...
0 CLOBETASOL PROPIONATE .05 g/mL
1 CLOBETASOL PROPIONATE .05 g/mL
2 CAMPHOR (SYNTHETIC) 2 g/100g
3 MENTHOL 6 g/100g