将字典值增量添加到 pandas DataFrame。具有dict键列名的DataFrame

Posted

技术标签:

【中文标题】将字典值增量添加到 pandas DataFrame。具有dict键列名的DataFrame【英文标题】:Incremental addition of dictionary values to a pandas DataFrame. DataFrame with column names of dict keys 【发布时间】: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 时?

【问题讨论】:

【参考方案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) 就够了。

以上是关于将字典值增量添加到 pandas DataFrame。具有dict键列名的DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

数据分析--pandas DataFrame

pandas相关操作

将 Pandas DataFrame 中的列组合到 DataFrame 中的列表列

将 pandas Dataframe 列映射到字典值

pandas一些基本操作(DataFram和Series)_1

从字典中添加具有映射值的新熊猫列[重复]