我有一个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循环的结果,它们应该作为唯一行添加。
答案 0 :(得分:6)
使用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
答案 1 :(得分:1)
您可以遍历字典,将每个字典的结果附加到列表中,然后将列表作为一行添加到DataFrame中。
release