连接具有相同长度的两个Pandas DataFrame扩展了生成的DataFrame的长度

时间:2017-06-28 22:54:48

标签: python pandas dataframe python-3.5

我有两个DataFrames,我试图连接在一起。 df_output_norm是我想要的数据帧。 X_test_minmax有81732行和6列,y_test有81732行和1列。这应该是一个简单的连接,但是当我连接它时,结果大小是(147158,7)

df_output_norm = pd.DataFrame()
df_output_norm = pd.concat([pd.DataFrame(X_test_minmax), pd.DataFrame(y_test)], axis=1)

print(df_output_norm.shape)
print(df_output_norm['label'].shape)
print(X_test_minmax.shape)
print(y_test.shape)

输出为
(147158,7)
(147158,)
(81732,6)
(81732)

列数是正确的,只是最后一列中的行数是错误的。我查看了数据,只扩展了最后一列'label',即y_test列。来自X_test_minmax的前6列具有正确的行长度。为什么会这样?

3 个答案:

答案 0 :(得分:0)

如果ignore_index = True不起作用,则可能是由重复的列名引起的:第一个数据帧中的一个列名与第二个数据帧的列名相同。更改列名可能会有所帮助。

答案 1 :(得分:0)

很老的问题,但是我登陆这里寻找相同问题的解决方案。我发现这是由于行索引不匹配所致,因为该函数将尝试对它们进行连接(很可能是通过采样等方法将较大的df进行了分块)。

尝试

X_test_minmax.reset_index(inplace = True,drop = True)
y_test.reset_index(inplace = True,drop = True)
df_output_norm = pd.concat([pd.DataFrame(X_test_minmax),pd.DataFrame(y_test)],axis = 1)

答案 2 :(得分:-1)

也许索引阻止了您正在寻找的结果。尝试

f_output_norm = pd.concat([pd.DataFrame(X_test_minmax), pd.DataFrame(y_test)],
                          axis=1, 
                          ignore_index=True)

忽略连接轴上的索引。