我查看了旧问题,它们解决了类似的问题,但不是我想要解决的问题。作为快速背景,我正在摄取一个 API,该 API 有时会返回略有不同的对象,但我想将它们全部附加到同一个表中。
如果值不在其中一个字典中,我希望在数据框中将其留空
df = pd.DataFrame(columns=['C1','C2','C3','C4'])
r1 = {'C1':20,'C2':15,'C3':10,'C4':53}
r2 = {'C1':47,'C3':26,'C4':17}
r3 = {'C2':31,'C3':64,'C4':29}
r4 = {'C1':64,'C2':17}
r5 = {'C1':45,'C2':24,'C3':71,'C4':63}
我如何遍历 r1-5 并将它们附加到像这样的 DataFrame?
C1 C2 C3 C4
20 15 10 53
47 None 26 17
None 31 64 26
64 17 None None
45 24 71 63
提前致谢!
编辑:要添加一些额外的信息,这是我迄今为止尝试过的内容。
我已经将每个字典变成一个字典列表,然后尝试遍历每个键:值对并在 Loc 函数中使用键
举个例子:
r1 = [{'C1':20},{'C2':15},{'C3':10},{'C4':53}]
最佳答案
您可以使用 loc 或 append 两者来执行此操作。
如果你想逐行追加,那么你可以这样做
df.loc[len(df)] = r1
df.loc[len(df)] = r2
df.loc[len(df)] = r3
df.loc[len(df)] = r4
df.loc[len(df)] = r5
或者如果您想将所有行附加在一起,这样会更有效率,您可以这样做:
rows = [r1,r2,r3,r4,r5]
df = df.append(rows)
两者都给你以下输出
编辑:根据 starmandeluxe 的评论
由于 .append() 现在已被弃用,您可以只使用 pandas 构造函数创建一个 DataFrame,然后使用 .concat() 将其附加到现有数据库
rows = [r1,r2,r3,r4,r5]
df = pd.concat([df,pd.DataFrame(rows)])
关于python - 如何将 Python 字典附加到 Pandas DataFrame,将键与列名匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67318759/