Pandas concat导致NaN行?

3

我有两个数据框,行数相同: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 字符串,但问题仍然存在。


https://dev59.com/O2Ij5IYBdhLWcg3wk182 - BENY
2个回答

8
这里有一个类似的问题的答案可能会有所帮助:pandas concat generates nan values 简而言之,如果两个数据框的行索引存在任何不匹配,连接后的数据框将在不匹配的行中生成NaN。如果您不需要保留索引,可以在连接之前对两个数据集同时使用df.reset_index(drop=True, inplace=True)来解决问题。

2
我认为你的答案应该被采纳,因为它与 Pandas 更相关。 - Harshdeep Singh

5

我曾经遇到过相同的问题,当我生成训练和测试集时。这是我的解决方案,然而,我不知道为什么 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())

我现在非常爱你! :D - lte__
@lte__ 兄弟,我还是和你一样的问题,pd.concat不起作用...T_T - BENY
稍微清晰一点: - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接