【问题标题】: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其实是一个列表列表,这里我只考虑列表的第一行

【问题讨论】:

标签: python python-3.x pandas


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

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 2015-10-20
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 2018-04-23
      • 2018-02-08
      • 2017-06-13
      相关资源
      最近更新 更多