Python 带if条件的熊猫群比
我有下面的数据框架,里面有发票数据。我想根据下面的逻辑添加主代码 1-第一组由Python 带if条件的熊猫群比,python,pandas,Python,Pandas,我有下面的数据框架,里面有发票数据。我想根据下面的逻辑添加主代码 1-第一组由票证id和id组成。如果级别为零,则主代码应为零。如果不是code,则应取级别的零 +-----------+----+-------+------+ | ticket_id | id | level | code | +-----------+----+-------+------+ | 1 | 0 | 0 | 1710 | | 1 | 0 | 1 | 372 |
票证id
和id
组成。如果级别
为零,则主代码应为零。如果不是code
,则应取级别的零
+-----------+----+-------+------+
| ticket_id | id | level | code |
+-----------+----+-------+------+
| 1 | 0 | 0 | 1710 |
| 1 | 0 | 1 | 372 |
| 1 | 0 | 2 | 607 |
| 1 | 1 | 0 | 1727 |
| 1 | 1 | 1 | 370 |
| 1 | 1 | 2 | 607 |
| 2 | 0 | 0 | 269 |
| 2 | 0 | 1 | 371 |
| 2 | 0 | 2 | 607 |
| 2 | 1 | 0 | 277 |
| 2 | 1 | 1 | 371 |
| 2 | 1 | 2 | 607 |
+-----------+----+-------+------+
到目前为止,我已经编写了以下代码
df.groupby(['ticket\u id','id'])['code'].transform(lambda x:if-df['level']==0,0,df['code'])
但我没能把正确的答案弄出来
我想要的输出如下
+-----------+----+-------+------+----------+
| ticket_id | id | level | code | MainCode |
+-----------+----+-------+------+----------+
| 1 | 0 | 0 | 1710 | 0 |
| 1 | 0 | 1 | 372 | 1710 |
| 1 | 0 | 2 | 607 | 1710 |
| 1 | 1 | 0 | 1727 | 0 |
| 1 | 1 | 1 | 370 | 1727 |
| 1 | 1 | 2 | 607 | 1727 |
| 2 | 0 | 0 | 269 | 0 |
| 2 | 0 | 1 | 371 | 269 |
| 2 | 0 | 2 | 607 | 269 |
| 2 | 1 | 0 | 277 | 0 |
| 2 | 1 | 1 | 371 | 277 |
| 2 | 1 | 2 | 607 | 277 |
+-----------+----+-------+------+----------+
请指导我解决此问题。您可以检查级别
中的哪些值不同于0
,并将布尔结果与相应组的第一个值相乘,这可以通过使用第一个
进行计算和聚合得到:
df['MainCode'] = (df.level.ne(0)
.mul(df.groupby(['ticket_id','id']).code
.transform('first')))
ticket_id id level code MainCode
0 1 0 0 1710 0
1 1 0 1 372 1710
2 1 0 2 607 1710
3 1 1 0 1727 0
4 1 1 1 370 1727
5 1 1 2 607 1727
6 2 0 0 269 0
7 2 0 1 371 269
8 2 0 2 607 269
9 2 1 0 277 0
10 2 1 1 371 277
11 2 1 2 607 277
太棒了。这很好用。这是我第一次遇到Dataframe.ne
方法。让我深入了解一下。。