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

Python-Pandas-在索引列中减去子列

  •  1
  • marco  · 技术社区  · 8 年前

    有没有一种简单的方法可以像我在做下面的求和一样?

    换句话说,我想在每个索引列中减去它的两个子列。

    import pandas as pd
    arrays = [np.array(['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux']),
              np.array(['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two'])]
    tuples = list(zip(*arrays))
    index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
    df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)
    df.sum(level=0, axis=1)
    

    我觉得最后一行很优雅,但显然,这行不通……:

    df.sub(level = 0,axis=1)
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   jezrael    8 年前

    你需要 xs 对于,请选择 MultiIndex sub :

    print (df.xs('one', level=1, axis=1).sub(df.xs('two', level=1, axis=1)))
    first       bar       baz       foo       qux
    A      0.511199  1.684088 -1.377296  1.818127
    B      0.421159  0.477186  0.777098 -1.265297
    C      0.512711  2.262646 -0.435340  1.400147