我通过迭代函数n
次来生成列表字典。因此,作为d
的结果,我有n
词典区别。这是d
:
d = {'Insumos' : ["%s" % frame['DESCRIÇÃO'].unique()], 'Valor previsto' : ['%.2f' % y_pred_fut],
'MAPE' : [ '%.2f' % mean_absolute_percentage_error(y_mat_val, y_pred)],
'MAE' : ['%.2f' %mean_absolute_error(y_mat_val, y_pred)], 'r2' : ['%.2f' % r2_score(y_mat_val, y_pred)]}
这是n
d
特定迭代的结果:
{'Insumos': ["['ABUTILOM (ABUTILON STRIATUM)']"], 'Valor previsto': ['30.56'], 'MAPE': ['5.59'], 'MAE': ['1.60'], 'r2': ['-16.70']}
{'Insumos': ["['ACALIFA (ACALYPHA WILKESIANA)']"], 'Valor previsto': ['31.22'], 'MAPE': ['3.24'], 'MAE': ['0.96'], 'r2': ['-2.24']}
{'Insumos': ['[\'ACIONADOR MANUAL TIPO "QUEBRE O VIDRO"\']'], 'Valor previsto': ['72.52'], 'MAPE': ['4.76'], 'MAE': ['3.21'], 'r2': ['-17.48']}
{'Insumos': ["['ADUBO QUÍMICO NPK, 10:10:10']"], 'Valor previsto': ['2.71'], 'MAPE': ['5.02'], 'MAE': ['0.12'], 'r2': ['0.41']}
如果我应用pd.DataFrame.from_records(d)
,我得到n
不同的数据帧如下:
0 ['ABUTILOM (ABUTILON STRIATUM)'] 1.60 5.59 30.56 -16.70
Insumos MAE MAPE Valor previsto r2
0 ['ACALIFA (ACALYPHA WILKESIANA)'] 0.96 3.24 31.22 -2.24
Insumos ... r2
0 ['ACIONADOR MANUAL TIPO "QUEBRE O VIDRO"'] ... -17.48
[1 rows x 5 columns]
Insumos MAE MAPE Valor previsto r2
0 ['ADUBO QUÍMICO NPK, 10:10:10'] 0.12 5.02 2.71 0.41
Insumos MAE MAPE Valor previsto r2
0 ['ALAMANDA (ALLAMANDA NERIIFOLIA)'] 2.13 7.03 32.93 -8.51
Insumos ... r2
0 ['ALVENARIA DE EMBASAMENTO - TIJOLOS MACIÇOS C... ... -1.83
[1 rows x 5 columns]
.
.
.
我希望得到所有n
不同的词典,这些词典来自n
的d
迭代,并制作一个独特的数据帧。
谢谢!
如果你有字典,你需要使用from_dict
而不是from_records
。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.from_dict.html
如果您有多个输入词典,请将词典放入列表中:
d = [
{'Insumos': ["['ABUTILOM (ABUTILON STRIATUM)']"], 'Valor previsto': ['30.56'], 'MAPE': ['5.59'], 'MAE': ['1.60'], 'r2': ['-16.70']},
{'Insumos': ["['ACALIFA (ACALYPHA WILKESIANA)']"], 'Valor previsto': ['31.22'], 'MAPE': ['3.24'], 'MAE': ['0.96'], 'r2': ['-2.24']},
{'Insumos': ['[\'ACIONADOR MANUAL TIPO "QUEBRE O VIDRO"\']'], 'Valor previsto': ['72.52'], 'MAPE': ['4.76'], 'MAE': ['3.21'], 'r2': ['-17.48']},
{'Insumos': ["['ADUBO QUÍMICO NPK, 10:10:10']"], 'Valor previsto': ['2.71'], 'MAPE': ['5.02'], 'MAE': ['0.12'], 'r2': ['0.41']},
]
然后我认为它应该按照你的意愿工作。
>>>>pd.DataFrame.from_records(d)
Insumos MAE MAPE \
0 [['ABUTILOM (ABUTILON STRIATUM)']] [1.60] [5.59]
1 [['ACALIFA (ACALYPHA WILKESIANA)']] [0.96] [3.24]
2 [['ACIONADOR MANUAL TIPO "QUEBRE O VIDRO"']] [3.21] [4.76]
3 [['ADUBO QU?MICO NPK, 10:10:10']] [0.12] [5.02]
Valor previsto r2
0 [30.56] [-16.70]
1 [31.22] [-2.24]
2 [72.52] [-17.48]
3 [2.71] [0.41]
当您将一个d
提供给pd.DataFrame
时,它只能生成一行的DataFrame。你需要结合d
值。最简单(但不是最有效)的方法是创建一个list
并添加每个计算的d
与append(d)
像这样
d_list = []
for some_data in some_data_source:
d = get_d(some_data)
d_list.append(d)
df = pd.DataFrame(d_list)
dicts列表将生成您想要的DataFrame。
附:目前尚不清楚,为什么你在这里的dict中接受一个值
'MAPE' : [ '%.2f' % mean_absolute_percentage_error(y_mat_val, y_pred)]
这将使以后难以操纵。单个值最好按原样存储
'MAPE' : '%.2f' % mean_absolute_percentage_error(y_mat_val, y_pred)
如果你想在DataFrame中进行一些计算,你最好不要将值转换为字符串,而是存储值。您可以稍后转换为字符串
'MAPE' : mean_absolute_percentage_error(y_mat_val, y_pred)