【问题标题】:How to append Python dictionary to Pandas DataFrame, matching the key to the column name如何将 Python 字典附加到 Pandas DataFrame,将键与列名匹配
【发布时间】: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 传递给使用所需列创建的现有空数据框。

标签: python pandas dictionary


【解决方案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)

两者都给你以下输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 2018-02-22
    • 2019-01-05
    • 2019-06-24
    • 1970-01-01
    • 2015-03-06
    相关资源
    最近更新 更多