试图将多个字典列表合并为一个Pandas DataFrame



我正在使用一个Web服务,该服务以以下形式返回有关提交图像的推断数据:{IMG_123.jpg:[{‘keyword':值,‘score’:值},{‘keyword':数值,‘score':数值}

像这样:https://i.stack.imgur.com/FEDqU.png

我想将多个查询组合成单个数据帧,使得列是图像的名称,索引是";关键字";其中数据点是"0"的值;得分";。

我已经能够使用以下代码将数据转换为更可用的格式:

d={}
for k, v in mydict.items():
d[k] = [{i['keyword']:i['score']} for i in v]

print(pd.DataFrame(d['IMG_1221.JPG']).T)

但这又回来了:https://i.stack.imgur.com/c3R0l.png

我不知道如何将多个图像组合成我想要的格式,而且上面的代码没有以有用的方式格式化我的列。

该服务返回的关键字值在所有图像中都不一致,因此返回的dict列表将具有不同的大小和关键字。对于给定图像中不存在但数据帧中其他图像存在的任何键,我希望有一个NaN或0值。

非常感谢您的帮助!

IIUC,您需要这样的东西:

import pandas as pd
mydict = {'IMG_1.JPG': [
{'keyword': 'a', 'score': 1},
{'keyword': 'b', 'score': 2},
{'keyword': 'c', 'score': 3}]}
mydict2 = {'IMG_2.JPG': [
{'keyword': 'a', 'score': 1},
{'keyword': 'b', 'score': 2},
{'keyword': 'd', 'score': 3}]
}
mydicts = [mydict, mydict2]
df_all = pd.DataFrame()
for d in mydicts:
key = list(d.keys())[0]
df = pd.DataFrame(d[key]).set_index('keyword').rename(columns={'score':key})
df_all = pd.concat([df_all, df], axis=1)
print(df_all)
IMG_1.JPG  IMG_2.JPG
keyword                      
a              1.0        1.0
b              2.0        2.0
c              3.0        NaN
d              NaN        3.0

最新更新