大熊猫连续导致NaN行?

时间:2017-08-30 15:01:09

标签: pandas concatenation

我有两个行数相同的数据框:1434,我想在轴1之间连接它们:

res = pd.concat([df_resolved, df1], axis=1)

这两个数据框没有任何具有相同名称的列。我只想加入他们:

df1:        df2:
col1 col2 | col3 col4
1    0    | 9    0
6    0    | 0    0

=
concatenated_df:
col1 col2 col3 col4
1    0    9    0
6    0    0    0

这样可以很好地处理像这样的小例子,但出于某种原因,如果我在我的原始数据集上尝试它,我最终会得到很多NaN行,这对我来说太大了(我试图加入) 1434x24和1434x17458形状的数据帧)。所以结果有点像:

concatenated_df:
col1 col2 col3 col4
col1 col2 col3 col4
1    0    9    0
6    0    0    0
NaN  NaN  0    0

但我不明白为什么。你有什么想法会发生这种情况吗?我已经尝试通过在列名中附加_xyz字符串来重命名较小数据框中的所有列,但问题保持不变。

2 个答案:

答案 0 :(得分:3)

这里类似问题的答案可能会有所帮助:pandas concat generates nan values

简而言之,如果两个数据帧的行索引存在任何不匹配,则串联的数据帧在不匹配的行中将具有NaN。如果不需要按原样保留索引,则在连接前在两个数据集上使用df.reset_index(drop=True, inplace=True)应该可以解决问题。

答案 1 :(得分:2)

当我生成训练和测试集时,我曾经遇到同样的问题。这是我的解决方案,但是,我不知道为什么pd.concat在这种情况下也不起作用......

l1=df.values.tolist()
l2=df_resolved.values.tolist()
for i in range(len(l1)):
    l1[i].extend(l2[i])

df=pd.DataFrame(l1,columns=df.columns.tolist()+df_resolved.columns.tolist())