我是Python的新手(只是从R迁移),并希望将列表转换为pandas DataFrame。在研究了这个主题后,我发现了许多答案,但没有一个能够产生预期的结果。
数据来自API,具有以下结构:
[
{
"id": "ID_ONE",
"name": "NAME_ONE",
"source": {
"id": "AB",
"value": "source AB"
},
"topics": [
{
"id": "11",
"value": "topic 11 "
},
{
"id": "12",
"value": "topic 12 "
}
]
},
{
"id": "ID_TWO",
"name": "NAME_TWO",
"source": {
"id": "BC",
"value": "source BC"
},
"topics": [
{
"id": "12",
"value": "topic 12 "
}
]
}
]
使用requests
和json_normalize
之后,我最终获得了一个很好的DataFrame,但'主题'(作为词典列表)仍然是一系列列表。
您对如何处理此列表有任何建议吗?
如果您认为其他数据结构在Python中处理这样的输出更有用(我来自R,我觉得使用DataFrames和列表感觉很舒服),我也非常感谢您的意见或建议。
答案 0 :(得分:0)
我假设你到目前为止
import pandas as pd
from pandas.io.json import json_normalize
df=json_normalize(CopyPastedFromQuestion)
您可以在循环中再次串行化df.topics。但是,您需要对结果的外观进行编码。可能的解决方案可能是
all_topics=pd.DataFrame()
for i,row in df.iterrows():
try:
topics=json_normalize(df['topics'].values[i])
topics['parent_id']=row['id']
all_topics=all_topics.append(topics)
except:
pass
final=pd.merge(df,all_topics, left_on='id', right_on='parent_id', how='left')