在循环中将字典附加到熊猫数据框

Posted

技术标签:

【中文标题】在循环中将字典附加到熊猫数据框【英文标题】:Append dictionary to pandas dataframe in a loop 【发布时间】:2017-10-12 22:21:18 【问题描述】:

我需要在循环中创建一个字典,并将它们附加到一个 pandas 数据框中,其中包含匹配的 dict 键名和数据框的列名。每次迭代中字典的键值对可能不同。一个空的 pandas 数据框 df_podcast 在开头定义了字典中所有可能的键。

下面是一个尚未完成的代码示例

df_podcast=pd.DataFrame(columns=podcast_cols)

podcast_dict=
for j in range(len(podcast[0])):
    if podcast[0][j].tag=="key":
        podcast_dict[podcast[0][j].text]=podcast[0][j+1].text
### Have to append dict to pandas df ############

我已将 podcast_dict 附加到 df_podcast。 Podcast其实是一个列表列表,这里我只考虑列表的第一行

【问题讨论】:

Last after loop 可以使用 df = pd.DataFrame(podcast_dict) ? 这里的答案很有帮助:***.com/questions/40973687/… 【参考方案1】:

IIUC:

您需要做的是使用循环构建字典,然后在循环结束时,您可以使用字典创建数据框:

df1  = pd.DataFrame(podcast_dict)

并使用pd.concat追加:

df_podcast = pd.concat([df_podcast, df1])

【讨论】:

感谢斯科特的回答。但是我的字典中的键名、键值对等在每次迭代中都会有所不同。我想将值插入到字典的键与数据框的列名匹配的数据框中。例如:- 如果第一次迭代字典只有两个项目 "Track id":100 , "Play count":10 。我应该只在数据框第一行的 Track id 和 play count 列中插入值。 你试过了吗? Pandas 进行自动索引对齐,列是索引。我确实尝试了一些虚拟数据来验证和订购没关系。【参考方案2】:

你需要:

df  = pd.DataFrame([podcast_dict], columns=podcast_dict.keys())
df_podcast = pd.concat([df_podcast, df], axis =0).reset_index()

【讨论】:

【参考方案3】:

如果您想简单地将新数据从循环中创建的字典追加到现有的数据框:

df = pd.DataFrame()
for i in range(n):
    dict_new = dict(i)
    df = df.append(dict_new, ignore_index=True)
print(df)

注意:只要您创建的字典中的键相同,将其附加到现有数据框应该不会很麻烦。 Source

【讨论】:

以上是关于在循环中将字典附加到熊猫数据框的主要内容,如果未能解决你的问题,请参考以下文章

如何将字典附加到熊猫数据框?

Python:将字典附加到熊猫数据框行

如何在循环中附加多个熊猫数据框?

如何在 for 循环中附加熊猫数据框中的行?

熊猫数据框未附加

附加到熊猫数据框中的列表