首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从循环的n次迭代生成的n个字典的列表中生成数据帧?

如何从循环的n次迭代生成的n个字典的列表中生成数据帧?
EN

Stack Overflow用户
提问于 2019-04-11 23:03:06
回答 2查看 51关注 0票数 1

我已经通过迭代函数n次生成了一个字典列表。因此,对于d来说,我有n字典的区别。这是d

代码语言:javascript
运行
复制
 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)]}

这是d的特定迭代的n的结果

代码语言:javascript
运行
复制
{'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 distinct数据帧:

代码语言:javascript
运行
复制
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]
.
.
.

我想要从nn迭代中获得所有d不同的字典,并创建一个唯一的数据帧。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-11 23:14:19

如果您有字典,则需要使用from_dict而不是from_records

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.from_dict.html

如果您有多个输入字典,请将字典放入列表中:

代码语言:javascript
运行
复制
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']},
]

那么我认为它应该像你想要的那样工作。

代码语言:javascript
运行
复制
>>>>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]
票数 1
EN

Stack Overflow用户

发布于 2019-04-12 01:37:44

当您向pd.DataFrame提供一个d时,它只能生成包含这一行的DataFrame。您需要组合d值。最简单(但不是最有效)的方法是创建一个list,然后用append(d)在其中添加每个已计算的d,如下所示

代码语言:javascript
运行
复制
d_list = []
for some_data in some_data_source:
    d = get_d(some_data)
    d_list.append(d)

df = pd.DataFrame(d_list)

一个字典列表将会产生你想要的DataFrame。

附注:还不清楚,为什么你会接受像这样的字典中的一个值

代码语言:javascript
运行
复制
'MAPE' : [ '%.2f' % mean_absolute_percentage_error(y_mat_val, y_pred)]

这将使以后很难进行操作。单个值最好按原样存储

代码语言:javascript
运行
复制
'MAPE' : '%.2f' % mean_absolute_percentage_error(y_mat_val, y_pred)

如果你想在DataFrame中进行一些计算,最好不要将值转换为字符串,而是将值存储起来。您可以稍后转换为字符串

代码语言:javascript
运行
复制
'MAPE' : mean_absolute_percentage_error(y_mat_val, y_pred)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55635681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档