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

Posted

技术标签:

【中文标题】如何将 Python 字典附加到 Pandas DataFrame,将键与列名匹配【英文标题】:How to append Python dictionary to Pandas DataFrame, matching the key to the column name 【发布时间】:2021-07-22 21:41:19 【问题描述】:

我查看了旧问题,他们解决了类似的问题,但不是我想要解决的问题。作为快速背景,我正在摄取一个有时返回略有不同的对象的 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]

【问题讨论】:

检查pd.DataFrame([r1, r2, r3, r4, r5]) 谢谢,唯一的问题是有时我只会得到一个没有包含所有列的响应。我正在使用该 DataFrame 将其写入 SQL。例如,如果我只写 r2,我怎么还能“强制”它拥有所有 C1、C2、C3 和 C4? df = df.append(r2, ignore_index=True). 这能回答你的问题吗? append dictionary to data frame 您可以将列显式传递给pd.DataFrame([r2], columns=['C1','C2','C3','C4']),也可以将append r2 传递给使用所需列创建的现有空数据框。 【参考方案1】:

你可以使用 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)

两者都给你以下输出

【讨论】:

以上是关于如何将 Python 字典附加到 Pandas DataFrame,将键与列名匹配的主要内容,如果未能解决你的问题,请参考以下文章

将多个字典附加到 Pandas 数据框:错误 DataFrame 构造函数未正确调用?

python - 如何将 numpy 数组附加到 pandas 数据帧

Python Pandas Dataframe:如何同时将多个索引附加到列表中?

如何在 Python 中使用 Pandas 数据结构附加多个 CSV 文件

将 Pymongo 数据从列表附加到 pandas 数据框

如何以附加模式导出 DataFrame to_json - Python Pandas?