我有 2 个数据框和一个列表。我想将它们混合在 pandas 数据框中。
Lista m1、Dataframe test_subdata 和 Dataframe 预测:
len(m1)
438
test_subdata.shape
(438, 8)
predicciones.shape
(438, 3)
所以基本上我想这样做,一个大小为 (438, 3) 且具有上述值的数据框:
result_frame = pd.DataFrame({'index': test_subdata['id'], 'match_1': m1,
'pred1': predicciones['pred1']})
但是当我这样做时,出现以下错误:
ValueError: array length 438 does not match index length 841
一些想法,发生了什么?
PS:当我仅将一个数据帧与列表混合时,一切正常,即使在 2 个数据帧之间也是如此。
最佳答案
由于该系列包含的索引,您收到数组不匹配错误。因此,请尽早重置索引或仅传递值,即
result_frame = pd.DataFrame({'index': test_subdata['id'].values, 'match_1': m1,
'pred1': predicciones['pred1'].values})
说明
由于 test_subdata
和 predicciones
是系列,如果 test_subdata
和 predicciones
的索引不同,则新对象具有将从数据框构造函数创建不存在的索引。因此在这种情况下数据帧大小加倍。 (为了使您现有的方法发挥作用,请确保两个数据帧具有相同的索引。)
由于m1
长度与现有索引长度不匹配,因此将出现数组长度不匹配错误。
关于python - 通过混合列表和数据帧列,数组长度与索引长度不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46492964/