【问题标题】:Incremental addition of dictionary values to a pandas DataFrame. DataFrame with column names of dict keys将字典值增量添加到 pandas DataFrame。具有dict键列名的DataFrame
【发布时间】:2018-02-22 02:09:14
【问题描述】:

假设我有一个 dict 并创建一个 pandas DataFrame 作为

dict = {'a':1,'b':2,'c':3}
df = pd.DataFrame(columns = ['a','b','c'])

每次创建具有相同键的新字典时,我都需要将值作为一行添加到df。最初,df 没有行,也没有分配索引。我所知道的是使用

df.append(pd.Series(), ignore_index=True)

但是,这会不断添加列。此外,由于字典不包含订单,因此在插入之前硬编码list(dict.values()) 之类的东西会随机化订单,将创建的列表作为df 的一行,尤其是当我不断更新dict 时?

【问题讨论】:

    标签: python pandas dictionary indexing append


    【解决方案1】:

    创建初始 DataFrame 后:

    df = pd.DataFrame(columns = ['a','b','c'])
    df
    Empty DataFrame
    Columns: [a, b, c]
    Index: []
    

    然后您可以附加具有匹配列的字典。我会通过将字典传递给 DataFrame 构造函数并使用pd.concat() 来做到这一点,尽管可能有更有效/更快的方法:

    from_dict = pd.DataFrame({k: [v] for (k, v) in dic.items()})
    df = pd.concat([df, from_dict]) #default axis = 0
    df
         a    b    c
    0  1.0  2.0  3.0
    

    【讨论】:

      【解决方案2】:

      如果你有相同列的数据框,你应该考虑使用concat

      pd.concat([df1, df2])
      

      如果你想使用追加,假设你有你的df 和一个values 字典:

      values = {'a':1,'b':2,'c':3}
      df = df.append(pd.Series(values), ignore_index=True)
      

      【讨论】:

      • df.append(values, ignore_index=True) 就够了。
      猜你喜欢
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 2018-10-26
      • 2016-09-02
      • 2022-11-10
      • 2023-03-10
      相关资源
      最近更新 更多