python - 根据其他列的分组依据和条件创建新列
问题描述
我正在使用如下数据框设置:
| 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:
日期 | 产品 | 地区 | 陈年 |
---|---|---|---|
20 年 1 月 12 日 | 销售量 | 西北 | 2 |
20 年 1 月 11 日 | 销售量 | 西南 | 1 |
20 年 1 月 12 日 | 进口 | 西南 | 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
推荐阅读
- java - 使用 pyspark 创建自定义文件阅读器以读取数据中带有换行符的文件
- android - 在android中杀死应用程序后后台服务无法正常工作
- r - 如何计算 data.frame 中列中的值?
- android - Kotlin Android Studio - AlertDialog 中的 TextInputLayout
- winforms - 修改 ListBox 项后 RichTextBox 失去焦点和插入符号位置
- asp.net - 从一个 WebAPI 重定向到另一个 WebAPI 并获取响应
- java - 每次创建新通知时如何防止通知被覆盖?
- clojurescript - 使用 clojurescript 对字典进行部分更改
- python - 如何通过 BeautifulSoup 和 soup.select_one() 获取变量的值?
- c++ - 如何理解程序需要哪个递归函数