Python 使用for循环格式化getting ValueError:值的长度与索引的长度不匹配

Python 使用for循环格式化getting ValueError:值的长度与索引的长度不匹配,python,pandas,for-loop,Python,Pandas,For Loop,我正在使用以下代码: string="Verificamos {} vem crescendo em media {} porcento ao ano. A empresa {} por exemplo {}" df['go']=[string.format(*r) for r in dfcres[['CNAE_x','Crescimento_t11_Peers_CNAE','Top_Cres1','Top_Cres1%']].values.tolist()] 如果我打印dfcres[['CN

我正在使用以下代码:

string="Verificamos {} vem crescendo em media {} porcento ao ano. A empresa {} por exemplo {}"
df['go']=[string.format(*r) for r in dfcres[['CNAE_x','Crescimento_t11_Peers_CNAE','Top_Cres1','Top_Cres1%']].values.tolist()]
如果我打印
dfcres[['CNAE\u x'、'Crescimento\u t11\u Peers\u CNAE'、'Top\u Cres1'、'Top\u Cres1%]
,我会得到:

         CNAE_x     Crescimento_t11_Peers_CNAE    Top_Cres1   Top_Cres1%
6     "bovinos"                           0.10  "Maria Ltd"         0.22
8      "suínos"                           0.08  "Carla Ltd"         0.10
9  "construção"                           0.93    "Mark SA"         0.30
因此,df['go']应该如下所示:

  go
6 "Verificamos bovinos vem crescendo em media 0.10 porcento ao ano. A empresa Maria Ltd por exemplo 0.22"
8 "Verificamos suínos vem crescendo em media 0.08 porcento ao ano. A empresa Carla Ltd por exemplo 0.10"
9 "Verificamos construção vem crescendo em media 0.93 porcento ao ano. A empresa Maria Ltda por exemplo 0.30"
我得到了这个错误:

ValueError: Length of values does not match length of index

我不知道这个错误是什么意思。是否有人可以提供帮助或建议其他方法来获得相同的结果?

我在自己的计算机上尝试了这个方法,但没有使用
dfcres
,只是将值作为列表保存。这起作用了。因此,我怀疑问题在于:

  • 您前面可能缺少
    {}
    。(预期结果以数字开头),或
  • 两个括号而不是一个,或
  • values()
    函数返回多少个值

  • 试着从这里开始

    你的python版本是什么?在Python 3.6.4上使用此示例对我有效:

    CNAE_x Outravar1 Crescimento_t11_Peers_CNAE Top_Cres1 Top_Cres1% Outravar2 "bovinos" 12 0.10 "Maria Ltd" 0.22 "vaca" "suínos" 1575 0.08 "Carla Ltd" 0.10 "porco" "construção" 358 0.93 "Mark SA" 0.30 "casas" 但是如果
    df
    的行数与
    dfcresc
    的行数不同,例如

    >>> df
        CNAE_x  Outravar1   Crescimento_t11_Peers_CNAE  Top_Cres1   Top_Cres1%  Outravar2
    0   bovinos       12                        0.10    Maria Ltd   0.22     vaca
    1   construção   358                        0.93    Mark SA     0.30    casas
    
    然后您仍然会收到此消息错误

    如果不确定两个数据帧的行数是否相同,则应避免使用此方法

    如果我的猜测是正确的,
    df
    是巴西经济活动的数据框架(CNAE)。因此,您可以使用
    CNAE_x
    作为唯一标识符,例如:

    首先,创建列dfcres['go']

    dfcres['go']=[string.format(*r) for r in dfcres.loc[,'CNAE_x','Crescimento_t11_Peers_CNAE','Top_Cres1','Top_Cres1%']].values.tolist()]
    
    然后使用相同的
    CNAE_x
    值连接数据匹配行:

    pd.merge(df, dfcres,
        how='right', on='CNAE_x')
    

    您试图写入
    df
    ,但您正在从
    dfcres
    中提取值。改为写入
    dfcres['go']
    pd.merge(df, dfcres,
        how='right', on='CNAE_x')