我有以下的框架:
key1 key2
0 a one
1 a two
2 b one
3 b two
4 a one
5 c two
字符串
现在,我想将key1
分组,并计算"one"
列key2
的值,得到以下结果:
key1
0 a 2
1 b 1
2 c 0
型
我只是得到了通常的计数:
df.groupby(['key1']).size()
型
但我不知道如何加入条件。
我试过这样的方法:
df.groupby(['key1']).apply(df[df['key2'] == 'one'])
型
但我不能再往前走了我该怎么做?
6条答案
按热度按时间stszievb1#
我认为你需要先加上一个条件:
字符串
或者将
categorical
与key1
一起使用,然后缺失值由size
添加:型
如果需要所有组合:
型
yc0p9oo02#
您可以在列“key2”中计算groupby框架中出现“one”的次数,如下所示:
df.groupby('key1')['key2'].apply(lambda x: x[x == 'one'].count())
产量
字符串
zzwlnbp83#
备选方案1
字符串
备选方案2
型
备选方案3
型
备选方案4
型
备选方案5
型
8e2ybdfx4#
你可以通过在两个键上应用groupby()和unstack()来做到这一点。
字符串
7eumitmz5#
也许不是最快的解决方案,但如果key2等于“one”,则可以创建列为1的新数据框。
字符串
然后将其聚合。
型
dffbzjpn6#
我需要计数2列(lambda有两个参数)作为示例:
Pandas dataframe groupby func
,在列key2
中,如下所示:df.groupby('key1')['key2'].apply(lambda x: x[x == 'one'].count())
个