在二级索引中应用新行
Applying new row within second level index
我有一个看起来像这样的数据框:
+-----------+---------+-------+-------+-------+
| | | 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
这是如何实现的?
这取决于您要执行此操作的次数以及当前其他值的存储方式。
如果您只想将少量的利润添加到上述各项中,您可以使用 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
如果您的 Profit 信息存储在另一个 DataFrame 中,使用 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
我有一个看起来像这样的数据框:
+-----------+---------+-------+-------+-------+
| | | 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
这是如何实现的?
这取决于您要执行此操作的次数以及当前其他值的存储方式。
如果您只想将少量的利润添加到上述各项中,您可以使用 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
如果您的 Profit 信息存储在另一个 DataFrame 中,使用 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