在循环中将字典附加到熊猫数据框
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
【讨论】:
以上是关于在循环中将字典附加到熊猫数据框的主要内容,如果未能解决你的问题,请参考以下文章