我有一个包含数千个称为“企业”的json对象的json字典,该字典在数组中包含以下嵌套的JSON。每个“企业”都有一个“唯一请求ID”,该ID也会返回。有时,一个请求可能会返回多个业务。
{'principals': [{'addresses': [{'city': 'DENVILLE', 'state': 'NJ', 'metadata': {'sources': [], 'lastSeen': None, 'firstSeen': None, 'sourceCount': 0}, 'zip': '07834', 'address': '87 JILLOW AVE'}], 'titles': ['SECRETARY'], 'names': [{'suffix': None, 'firstName': 'JAMES', 'middleName': None, 'lastName': 'VU', 'salutation': None, 'pids': [], 'metadata': {'sources': [], 'lastSeen': None, 'firstSeen': None, 'sourceCount': 0}}, {'suffix': None, 'firstName': 'LAURA', 'middleName': 'A', 'lastName': 'VU', 'salutation': None, 'pids': [], 'metadata': {'sources': [], 'lastSeen': None, 'firstSeen': None, 'sourceCount': 0}}], 'pids': ['1000320219031584'], 'lastSeenDate': '2008-01-01T00:00:00.000Z', 'firstSeenDate': None}, {'addresses': [{'city': 'LAKE HAVASU CITY', 'state': 'AZ', 'metadata': {'sources': [], 'lastSeen': None, 'firstSeen': None, 'sourceCount': 0}, 'zip': '86403', 'address': '1887 WILLOW AVE'}], 'titles': ['MANAGER'], 'names': [{'suffix': None, 'firstName': 'JASON', 'middleName': None, 'lastName': 'ROBERTS', 'salutation': None, 'pids': [], 'metadata': {'sources': [], 'lastSeen': None, 'firstSeen': None, 'sourceCount': 0}}], 'pids': ['1000320147115755'], 'lastSeenDate': '1999-07-28T00:00:00.000Z', 'firstSeenDate': None}], 'tradeNames': ['DORI LAURA DVM'], 'addresses': [{'city': 'HAVASU CITY', 'state': 'NY', 'metadata': {'sources': [], 'lastSeen': None, 'firstSeen': None, 'sourceCount': 0}, 'zip': '16403', 'address': '299 PASEO DEL SOL'}], 'searchType': 'Name+Address', 'contacts': [], 'phones': ['19284532022'], 'registrationDate': '1999-07-29T00:00:00.000Z', 'websites': ['WWW.DORIVET.COM'], 'eid': '39281818', 'sources': {'sources': [], 'lastSeen': None, 'firstSeen': None, 'sourceCount': 5}, 'dataSource': 'iData', 'names': ['DORI VETERINARY CENTER INC', 'DORI-ROBERTS INC'], 'registrationAddress': {'city': 'PHOENIX', 'state': 'AZ', 'metadata': {'sources': [], 'lastSeen': None, 'firstSeen': None, 'sourceCount': 0}, 'zip': '85007', 'address': '1200 W WASHINGTON'}, 'duns': ['042512348'], 'relatedBusinesses': [], 'industryNames': ['VETERINARIAN, ANIMAL SPECIALTIES'], 'officeAddress': None, 'ein': ['77711133333']}
我希望DataFrame的最终CSV看起来像这样……所有平整的列都在右侧。
RequestId BusinessName BusinessAddress ....
ABCD DORI VETERINARY CENTER INC. 87 JILLOW AVENUE
ABCD SECONDARY VETERINARY CENTER INC. 3 MAIN ST.
XYZV. xxxbusiness 20 AUTO ST.
使用Pandas和DataFrames是否可能?
答案 0 :(得分:0)
您必须使用json_normalize
执行以下操作,但问题是,您必须对每个记录路径分别进行操作-一个用于委托人,一个用于tradeNames,依此类推。 / p>
with open('test-so.json') as f:
data = json.load(f)
df1 = json_normalize(data,
record_path=['principals', 'addresses'],
meta=[['principals', 'lastSeenDate']],
errors='ignore')
city state zip address metadata.sources metadata.lastSeen metadata.firstSeen metadata.sourceCount principals.lastSeenDate
0 DENVILLE NJ 07834 87 JILLOW AVE [] None None 0 2008-01-01T00: 00: 00.000Z
1 LAKE HAVASU CITY AZ 86403 1887 WILLOW AVE [] None None 0 1999-07-28T00: 00: 00.000Z
或者您可以直接使用flatten_json
,它将整个json压缩为一行,请在此处查看文档-Flatten JSON