我有两个行数相同的数据框: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字符串来重命名较小数据框中的所有列,但问题保持不变。
答案 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())