lte*_*e__ 2 concatenation pandas
我有两个行数相同的数据框:1434,我想将它们连接到轴 1 中:
res = pd.concat([df_resolved, df1], axis=1)
Run Code Online (Sandbox Code Playgroud)
这两个数据框没有任何同名的列。我只想加入他们,例如:
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
Run Code Online (Sandbox Code Playgroud)
这在这样的一个小例子上工作得很好,但由于某种原因,如果我在我的原始数据集上尝试它,我最终会得到很多 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
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么。你有什么想法是如何发生的吗?我尝试通过将 _xyz 字符串附加到列名来重命名较小数据框中的所有列,但问题保持不变。
小智 7
此处类似问题的答案可能会有所帮助:pandas concat生成 nan 值
简而言之,如果两个数据帧的行索引有任何不匹配,则连接的数据帧将在不匹配的行中包含 NaN。如果您不需要保持索引的df.reset_index(drop=True, inplace=True)原样,则在连接之前在两个数据集上使用应该可以解决问题。
我曾经有同样的问题,当我生成训练和测试集时。这是我的解决方案,但是,我不知道为什么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())
Run Code Online (Sandbox Code Playgroud)