Pandas groupby 计数值 > 0
Pandas groupby counting values > 0
我有一个pandas df
格式如下
MATERIAL DATE HIGH LOW
AAA 2022-01-01 10 0
AAA 2022-01-02 0 0
AAA 2022-01-03 5 2
BBB 2022-01-01 0 0
BBB 2022-01-02 10 5
BBB 2022-01-03 8 4
我希望对其进行转换,以便得到以下结果
MATERIAL HIGH_COUNT LOW_COUNT
AAA 2 1
BBB 2 2
基本上是 "HIGH_COUNT"
和 "LOW_COUNT"
我想计算该列大于 0 的出现次数,按 "MATERIAL"
分组。
我试过 df.groupby(['MATERIAL']).agg<xxx>
但我不确定要在此处使用 agg
函数。
编辑:
我用过
df.groupby(['MATERIAL']).agg({'HIGH':'count', 'LOW':'count})
但这甚至计算了 0
行。
您可以创建一个布尔数据帧和 groupby
+ sum
:
out = df[['HIGH', 'LOW']].gt(0).groupby(df['MATERIAL']).sum().add_suffix('_COUNT').reset_index()
输出:
MATERIAL HIGH_COUNT LOW_COUNT
0 AAA 2 1
1 BBB 2 2
我有一个pandas df
格式如下
MATERIAL DATE HIGH LOW
AAA 2022-01-01 10 0
AAA 2022-01-02 0 0
AAA 2022-01-03 5 2
BBB 2022-01-01 0 0
BBB 2022-01-02 10 5
BBB 2022-01-03 8 4
我希望对其进行转换,以便得到以下结果
MATERIAL HIGH_COUNT LOW_COUNT
AAA 2 1
BBB 2 2
基本上是 "HIGH_COUNT"
和 "LOW_COUNT"
我想计算该列大于 0 的出现次数,按 "MATERIAL"
分组。
我试过 df.groupby(['MATERIAL']).agg<xxx>
但我不确定要在此处使用 agg
函数。
编辑:
我用过
df.groupby(['MATERIAL']).agg({'HIGH':'count', 'LOW':'count})
但这甚至计算了 0
行。
您可以创建一个布尔数据帧和 groupby
+ sum
:
out = df[['HIGH', 'LOW']].gt(0).groupby(df['MATERIAL']).sum().add_suffix('_COUNT').reset_index()
输出:
MATERIAL HIGH_COUNT LOW_COUNT
0 AAA 2 1
1 BBB 2 2