python - 如何将 Python 字典附加到 Pandas DataFrame,将键与列名匹配

标签 python pandas dictionary

我查看了旧问题,它们解决了类似的问题,但不是我想要解决的问题。作为快速背景,我正在摄取一个 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)

两者都给你以下输出

enter image description here

编辑:根据 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/

相关文章:

python - 使用 update() 向字典添加值

python - TypeError : Only integers, slices (`:` ), ellipsis (`…` ), tf.newaxis (`None` ) 和标量 tf.int32/tf.int64 张量是有效的索引,得到 [1, 3]

python - 是否可以在 pytest 中并行执行相同的测试?

pandas - 在 kdb/q 中保存 pandas 数据框

python - 如果 pandas Dataframe 列值与单词匹配,则将其替换为列表

python - 列表元素与字典键之间的比较

python - sqlalchemy 按具有多个关系引用的模型进行过滤

python - 使用 zeep/python 创建 XML 序列

python - 通过 sqlalchemy 重复插入到 sqlite 数据库导致内存泄漏?

ruby - 这段代码中 row[/\w+/] 的用途是什么?