当您尝试向数据帧分配不同长度的numpy数组列表时,会出现此错误,并且可以按以下方式重现该错误:
四行数据框:
df = pd.Dataframe({'A': [1,2,3,4]})现在尝试为其分配两个元素的列表/数组:
df['B'] = [3,4] # or df['B'] = np.array([3,4])
两种错误都出来了:
ValueError:值的长度与索引的长度不匹配
因为数据框有四行,但是列表和数组只有两个元素。
解决方法 (谨慎使用):将列表/数组转换为熊猫系列,然后在进行分配时,系列中的缺失索引将被 NaN 填充:
df['B'] = pd.Series([3,4])df# A B#0 1 3.0#1 2 4.0#2 3 NaN # NaN because the value at index 2 and 3 doesn't exist in the Series#3 4 NaN
对于您的特定问题,如果您不关心索引或列之间的值的对应关系,则可以在删除重复项后为每个列重置索引:
df.apply(lambda col: col.drop_duplicates().reset_index(drop=True))# A B#0 1 1.0#1 2 5.0#2 7 9.0#3 8 NaN



