python - 如何将字典作为一行添加到 DataFrame 中?

标签 python pandas dictionary dataframe

我有一个包含以下列的 DataFrame:

columns = ['Autor', 'Preţul', 'Suprafaţa totală', 'Etaj', 'Etaje', 'Tipul casei', 'Tipul de camere','Numărul de camere','Starea apartamentului', 'Planificare', 'Tipul clădirii', 'Sectorul', 'Strada',  'Numărul casei']
df = pd.DataFrame(columns=columns)

我想向这个DataFrame逐行添加一些字典,例如我想在第一行添加这个字典:

{'Autor': nan,
 'Balcon/lojă': '2',
 'Etaj': '1',
 'Grup sanitar': 'separat',
 'Locul de amplasare în casă': 'In mijlocul casei',
 'Numărul casei': nan,
 'Numărul de camere': '4 şi mai multe camere',
 'Parcare': 'deschisă',
 'Preţul': nan,
 'Sectorul': nan,
 'Strada': nan,
 'Suprafaţa totală': '90 m²',
 'Tipul clădirii': 'Dat în exploatare'}

不在 DataFrame 列中的字典键的值应设置为 NaN 值。字典只有一部分列名作为键。

例如第二个字典:

{'Autor': nan,
 'Numărul casei': nan,
 'Numărul de camere': '3 camere',
 'Preţul': nan,
 'Sectorul': nan,
 'Strada': nan,
 'Suprafaţa totală': '103 m²',
 'Tipul clădirii': 'Dat în exploatare'}

字典是 for 循环的结果,它们应该作为唯一行添加。

最佳答案

使用 pandas.DataFrame.from_dict 替代构造函数。将您的“行”构建到列表中,开始于:

In [22]: import numpy as np

In [23]: nan = np.nan

In [24]: rows = []

In [25]: rows.append({'Autor': nan,
    ...:  'Balcon/lojă': '2',
    ...:  'Etaj': '1',
    ...:  'Grup sanitar': 'separat',
    ...:  'Locul de amplasare în casă': 'In mijlocul casei',
    ...:  'Numărul casei': nan,
    ...:  'Numărul de camere': '4 şi mai multe camere',
    ...:  'Parcare': 'deschisă',
    ...:  'Preţul': nan,
    ...:  'Sectorul': nan,
    ...:  'Strada': nan,
    ...:  'Suprafaţa totală': '90 m²',
    ...:  'Tipul clădirii': 'Dat în exploatare'})

In [26]: rows.append({'Autor': nan,
    ...:  'Numărul casei': nan,
    ...:  'Numărul de camere': '3 camere',
    ...:  'Preţul': nan,
    ...:  'Sectorul': nan,
    ...:  'Strada': nan,
    ...:  'Suprafaţa totală': '103 m²',
    ...:  'Tipul clădirii': 'Dat în exploatare'})

然后,只需确保传递适当的“orient”参数即可:

In [28]: pd.DataFrame.from_dict(rows, orient='columns')
Out[28]:
   Autor Balcon/lojă Etaj Grup sanitar Locul de amplasare în casă  \
0    NaN           2    1      separat          In mijlocul casei
1    NaN         NaN  NaN          NaN                        NaN

   Numărul casei      Numărul de camere   Parcare  Preţul  Sectorul  Strada  \
0            NaN  4 şi mai multe camere  deschisă     NaN       NaN     NaN
1            NaN               3 camere       NaN     NaN       NaN     NaN

  Suprafaţa totală     Tipul clădirii
0            90 m²  Dat în exploatare
1           103 m²  Dat în exploatare

编辑

实际上,只是注意到普通的构造函数工作得很好,不需要任何参数!

In [31]: pd.DataFrame(rows)
Out[31]:
   Autor Balcon/lojă Etaj Grup sanitar Locul de amplasare în casă  \
0    NaN           2    1      separat          In mijlocul casei
1    NaN         NaN  NaN          NaN                        NaN

   Numărul casei      Numărul de camere   Parcare  Preţul  Sectorul  Strada  \
0            NaN  4 şi mai multe camere  deschisă     NaN       NaN     NaN
1            NaN               3 camere       NaN     NaN       NaN     NaN

  Suprafaţa totală     Tipul clădirii
0            90 m²  Dat în exploatare
1           103 m²  Dat în exploatare

关于python - 如何将字典作为一行添加到 DataFrame 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42632470/

相关文章:

python - 尝试在打印语句中用 % 替换普通 var

python - 在一百万条记录上使用 pandas group by 的有效方法

c++ - 如何正确删除指针映射作为键?

python - 为什么我的 python 字典变得无序?

python - 从匹配值列表中删除字典

python - 我怎样才能缩短这个Python代码?

python - 在python上运行elasticsearch和kibana时出现回溯错误

python - 我如何在表达式中使用 Perl 的 s///?

python - 数字后带有减号的 CSV 文件。 "ValueError: could not convert string to float:"

python - 如何使用 Pandas 数据结构来计算自相关?