【问题标题】:append 1 Series (column) at the end of a dataframe with pandas在带有熊猫的数据框末尾附加 1 个系列(列)
【发布时间】:2021-08-24 01:08:14
【问题描述】:

我正在使用 python/pandas 编写笔记本,并且我有:

  • 一个Dataframe,X(大小20550行×18列)和一个
  • 一个系列,一个列,y(大小为20550
  • 我想在“X”末尾合并(或连接、追加!)列“y”
  • 并且有一个大小为 20550 行,19 列的 X_total

这可能很简单,但我试图水平追加或连接,但我最终得到了尺寸奇怪的数据帧,在最好的情况下,我得到了一个包含更多行的 df(20551 行 × 20565 列,或 20551 行 × 19 列,全是 NaN)

编辑: 我试过了:

pd.concat([X,y], axis=1)
X.append(other=y)
dfsv=[X,y]
pd.concat([X,y], axis=1, join='outer', ignore_index=False)
X.append(y, ignore_index=True)

有什么想法吗?

干杯!

【问题讨论】:

    标签: python pandas dataframe concatenation series


    【解决方案1】:

    要将系列作为列附加到数据框,系列必须具有将用作列名称的名称。同时,Series 的索引需要与数据帧的索引相匹配。因此,您可以这样做:

    y2 = pd.Series(y.values, name='y', index=X.index)
    X.join(y2)
    

    在这里,我们通过定义一个系列y2 并采用系列y 的值,将其列名y 并将其索引设置为与数据框X 相同,从而一步满足两个先决条件。然后,我们可以用.join()X的末尾加入y2

    编辑

    另一个更简单的解决方案:

    X['y'] = y.values
    

    【讨论】:

    • @cavosch 查看我的编辑以获得另一个更简单的解决方案。无论如何,记得accept the solution :-)
    • @cavosch 现在您获得了足够的 StackOverflow 声誉(15 岁以上)来投票。如果可以,也请对解决方案进行投票。
    【解决方案2】:

    如果 X 和 Y 具有相同的索引:

    pd.concat([X, Y], axis=1)
    

    如果 X 和 Y 有不同的索引,你可以试试:

    X.append(Y, ignore_index=True)
    

    【讨论】:

    • 我用我尝试过的东西在上面编辑过,它永远不会返回:相同的行数 * (18+1) 列
    【解决方案3】:

    你可以追加或 con at。将轴指定为列很重要

    >>> X = pd.concat([X,Y], axis=1)
    

    【讨论】:

    • 我用我尝试过的东西在上面编辑过,它永远不会返回:相同的行数 * (18+1) 列
    • 你能提供一些样品吗?而不是这 100,000 行 - 做一个只有 5 或 10 行的 X 和 Y 样本
    猜你喜欢
    • 2020-06-03
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2020-05-21
    • 2019-06-22
    • 1970-01-01
    相关资源
    最近更新 更多