根据其他列的分组依据和条件创建新列

扎布曼

我正在使用数据框设置,如下所示:

| date | Product | Region | Age |

| 01/12/20 | Sales | NW | 17 |
| 01/12/20 | Sales | NW | 30 |
| 01/11/20 | Sales | SW | 32 |
| 01/12/20 | Import | SW | 5 |
| 01/12/20 | Import | SW | 45 |
| 01/12/20 | Sales | NW | 31 |
| 01/12/20 | Import | NW | 2 |

我想创建一个新的数据框,显示年龄 > 30 的行数,按日期/产品/区域分组。IE:

日期 产品 地区 老的
01/12/20 销售量 西北 2
01/11/20 销售量 软件 1
01/12/20 进口 软件 1

我尝试了许多不同的方法,最新的使用 lambda 但到目前为止没有成功:

df['aged'] = df.groupby([pd.Grouper(freq="M"), 'Product', 'Region'])['Product'].transform(lambda x: count( x ) if df['age'] >= 30 else 0)

有没有人能够帮助并告诉我我哪里出错了?

安塞夫

我认为你需要:

new_df = (df[df['Age'].ge(30)].groupby(df.columns.difference(['Age']).tolist())['Age']
                              .count()
                              .reset_index(name='aged'))
print(new_df)


  Product Region      date  aged
0  Import     SW  01/12/20     1
1   Sales     NW  01/12/20     2
2   Sales     SW  01/11/20     1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章