【问题标题】:pandas concat two dataframes of different row size without nan valuespandas concat 两个不同行大小的数据帧,没有 nan 值
【发布时间】:2021-06-09 23:24:54
【问题描述】:

我正在连接两个 pandas 数据帧,它们具有完全相同的列,但行数不同。我想将第一个数据帧堆叠在第二个数据帧上。

当我执行以下操作时,我在某些列中获得了许多 NaN 值。我已经尝试使用post 修复,使用.reset_index 但我仍然得到 NaN 值。我的数据框有以下列:

第一个rem_dup_pre 和第二个rem_dup_po 的形状分别为(54178, 11) (83502, 11)

我试过这个:

concat_mil = pd.concat([rem_dup_pre.reset_index(drop=True), rem_dup_po.reset_index(drop=True)], axis=0)

我得到 NaN 值。例如,在“Station Type”中,以前在 rem_dup_prerep_dup_po 中都没有 NaN 值:

如何在没有 NaN 值的情况下简单地连接它们?

【问题讨论】:

  • 您能否分享两个数据帧中的一些示例行。我无法重现问题
  • 查看How to make good pandas examplesedit 您的问题,包括minimal reproducible example 示例输入和预期输出作为问题正文中的文本,而不是图片或外部链接
  • 试试这个df = pd.concat([df1,df2]).reset_index(drop=True),而不是你给的。

标签: python pandas dataframe


【解决方案1】:

我是这样做的,我没有得到任何额外的 NaN。

import pandas as pd
import numpy as np
df1 = pd.DataFrame({'a':[1,2,3,4,5,6],
                    'b':['a','b','c','d',np.nan,np.nan],
                    'c':['x',np.nan,np.nan,np.nan,'y','z']})
df2 = pd.DataFrame(np.random.randint(0,10,(3,3)), columns = list('abc'))
print (df1)
print (df2)
df = pd.concat([df1,df2]).reset_index(drop=True)
print (df)

这个的输出是:

DF1:

   a    b    c
0  1    a    x
1  2    b  NaN
2  3    c  NaN
3  4    d  NaN
4  5  NaN    y
5  6  NaN    z

DF2:

   a  b  c
0  4  8  4
1  8  4  4
2  2  8  1

DF:连接后

   a    b    c
0  1    a    x
1  2    b  NaN
2  3    c  NaN
3  4    d  NaN
4  5  NaN    y
5  6  NaN    z
6  4    8    4
7  8    4    4
8  2    8    1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-08
    • 2021-08-17
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2017-03-13
    相关资源
    最近更新 更多