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')