将字典值增量添加到 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 中的列组合到 DataFrame 中的列表列