如何将 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:如何同时将多个索引附加到列表中?