我想计算每组中有多少个值大于一组给定的值
例如,DataFrame
df
就像:
print(df)
item A B C
0 a -4 17 -15
1 a 19 -16 -3
2 a -18 -11 -13
3 b -2 9 7
4 b -9 -15 -14
5 b -20 2 -10
6 c -19 0 -10
7 c 11 3 4
8 d 5 0 -17
9 d 7 1 -1
条件c
是另一个DataFrame
,如
print(c)
item value
0 a 5
1 b -1
2 c 2
3 d 1
所需的结果如
count
item A B C
a 1 1 0
b 0 2 1
c 1 1 1
d 2 0 0
我搜索了有关在条件中使用pandas.groupby()
函数的问题,但答案基于"大于一个值"而不是一组值。
伪代码可能写成如下...
我知道它不能正常工作......
df.groupby("item")[["A", "B", "C"]].apply(lambda x: x > c["value"] if df["item"] == c["item"]).size()
如果你们中的任何人能帮助我,我们将不胜感激 非常感谢。
答案 0 :(得分:1)
IIUC
(df.set_index('item')).sub(c.set_index('item').reindex(df.item).value,axis=0).gt(0).groupby(level=0).sum()
Out[646]:
A B C
item
a 1.0 1.0 0.0
b 0.0 2.0 1.0
c 1.0 1.0 1.0
d 2.0 0.0 0.0