熊猫长度不匹配

时间:2020-03-14 18:54:18

标签: python pandas

我一直在用python开发一个分析脚本,我添加了几行内容以检查是否没有不匹配的行号,并且我写了这个

smallest_Val = min(len(InputDataFrame),len(Output_Data_set))
print(smallest_Val)
print(len(Output_Data_set.loc[0:smallest_Val, 'Time']))
print(len(InputDataFrame.loc[0:smallest_Val, 'Time']))

我得到的输出对我来说没有意义

69841
69842  <-------
69841

这到底是怎么回事?我已经运行了十几次,并且一直保持一个值不变。我添加了一个笨拙的解决方法来处理,但是“原因”对我而言更重要。

有关其他信息,Output_Data_set为10万行,使用创建

zero_data = np.zeros(shape=(100000,len(Full_Names)))
Output_Data_set = pd.DataFrame(zero_data, columns=Full_Names)

而且,InputDataFrame是通过读取CSV创建的(CSV文件是一团糟)

InputDataFrame = pd.read_csv(filename, usecols=[(6*run+1),(6*run+2),(6*run+3),(6*run+4),(6*run+5),(6*run+6)], header=24)

1 个答案:

答案 0 :(得分:1)

我想我有一个可能的解释。我认为误解来自numpy数组,Python或df.loc之间的差异。

Smallest_Val为69841,我们假设这是len(InputDataFrame)

如果您尝试len(df.loc [0:10])在简单的熊猫数据帧上的行为,它将是包含的,因此,如果它至少具有11行,它将返回11行。

对于较大的数据帧(output_data_set),它正是这样做的。 对于较小的行,因为它恰好具有69841行,所以它只返回行的总数,因为它不能选择更多行。因此,它只返回整个数据帧。

然后的解决方法是从Smallest_Val中减去1。