代码之家  ›  专栏  ›  技术社区  ›  Oak

如何用pandas减去两个部分列?

  •  1
  • Oak  · 技术社区  · 7 年前

    我刚刚开始学习熊猫,所以我可能遗漏了一些重要的东西,但我似乎无法成功地减去我正在使用的两列。我在excel中导入了一个电子表格,如下所示:

    df = pd.read_excel('/path/to/file.xlsx',sheetname='Sheet1')
    

    我的桌子 df.head() 看起来类似于以下内容:

          a         b        c        d
    0     stuff     stuff    stuff    stuff
    1     stuff     stuff    stuff    stuff
    2     data      data     data     data
    ...   ...       ...      ...      ...
    89    data      data     data     data
    

    我不在乎那些“东西”我想减去两列数据,使其成为自己的列。因此,很明显,我应该删掉我不感兴趣的行,并处理剩下的行,因此我尝试了以下方法:

    dataCol1 = df.ix[2:,0:1]
    dataCol2 = df.ix[2:,1:2]
    print(dataCol1.sub(dataCol2,axis=0))
    

    但结果是

                 a          b
    2           NaN        NaN
    3           NaN        NaN
    4           NaN        NaN
    ...         ...        ...
    89          NaN        NaN
    

    print(dataCol1-dataCol2) . 我真的不明白为什么这两个减法运算不仅会产生所有的NaN,而且会产生两列,而不是一列。因为当我 print(dataCol1) 例如,我确实获得了我想要使用的列:

          a      
    2     data     
    3     data   
    4     data     
    ...   ...
    89    data      
    

    是否有任何方法可以简单直接地从Excel电子表格工作,并使用所述电子表格列的截断部分执行基本操作?也许有比使用 df.ix 我当然也对这些方法持开放态度。

    1 回复  |  直到 7 年前
        1
  •  0
  •   cs95 abhishek58g    7 年前

    要做的一件事是减去这些值,这样就不必处理对齐问题:

    dataCol1 = df.iloc[2: , 0:1]   # ix is deprecated
    dataCol2 = df.iloc[2: , 1:2]
    
    result = pd.DataFrame(dataCol1.values - dataCol2.values)