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

在二级索引中应用新行

  •  0
  • NickP  · 技术社区  · 6 年前

    我有一个数据框,看起来像:

    +-----------+---------+-------+-------+-------+
    |           |         | Day 1 | Day 2 | Day 3 |
    +-----------+---------+-------+-------+-------+
    | Product 1 | Revenue |     0 |     0 |     0 |
    |           | Cost    |     0 |     0 |     0 |
    | Product 2 | Revenue |     0 |     0 |     0 |
    |           | Cost    |     0 |     0 |     0 |
    | Product 3 | Revenue |     0 |     0 |     0 |
    |           | Cost    |     0 |     0 |     0 |
    +-----------+---------+-------+-------+-------+
    

    基本上是一个垂直的两级索引。第一个层次是产品,第二个层次是收入或成本。

    Product 1 Revenue    0
              Cost       0
              Profit     0
    

    如何做到这一点?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Little Bobby Tables Ashfaq    6 年前

    它确实取决于您要执行此操作的次数以及当前其他值的存储方式。

    如果你只想增加一小部分利润以上每一个你可以使用 this method . 但是,此方法使用 ix at ,

    df = pd.DataFrame({('A', 'b'): [1, 2, 3], ('A', 'a'): [7, 2, 9]}).T
    df.at[('B', 'a'), :] = [1, 4, 5]
    
    Out[1]:     
                    0    1   2
             A  b   1    2   3
                a   7    2   9
             B  a   1    4   5
    

    concat ,就像这样,

    df = pd.DataFrame({('A', 'b'): [1, 2, 3], ('A', 'a'): [7, 2, 9]}).T
    df2 = pd.DataFrame({('B', 'a'): [1, 4, 5]}).T
    
    pd.concat([df, df2])
    
    Out[1]: 
            0   1   2
    A   b   1   2   3
        a   7   2   9
    B   a   1   4   5