【问题标题】:Pandas concat resulting in NaN rows? [duplicate]熊猫 concat 导致 NaN 行? [复制]
【发布时间】:2017-08-30 15:01:08
【问题描述】:

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

【问题讨论】:

标签: pandas concatenation


【解决方案1】:

我曾经有同样的问题,当我生成训练和测试集时。这是我的解决方案,但是,我不知道为什么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__ 伙计,我仍然和你有同样的问题 pd.concat 确实有效...T_T
【解决方案2】:

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

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

【讨论】:

  • 我认为您的回答应该是公认的,因为它与 Pandas 更相关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 2018-07-05
  • 1970-01-01
  • 2021-09-17
  • 2021-12-15
  • 2014-01-29
  • 1970-01-01
相关资源
最近更新 更多