在二级索引中应用新行



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

+-----------+---------+-------+-------+-------+
|           |         | 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

如何实现这一点?

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

如果您希望在上述每个利润中添加少量利润,您可以使用此方法。但是,此方法使用将要弃用的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

最新更新