2

Python と pandas で任意の 1 つの値に対応する要素の数をグループごとにカウントするにはどうすればよいですか?

Rとplyrの次のコードを意味します:

ddply(df, .(group), summarise, x=sum(ifelse(y==1, 1, 0)))

では、次の欠落部分は何を書けばいいのでしょうか?

df.groupby(["groupA", "groupB"]).apply(lambda x: ....?)

ありがとう。

4

2 に答える 2

1

すべての 1 の単純な合計が必要な場合は、次のようになります。

df.groupby(["groupA", "groupB"]).sum()

条件を使用する場合:

df.groupby('A').apply(lambda x: x[x['B'] > 0]['B'].sum())

また

df.groupby('A').agg(lambda x: np.sum(x[x > 0]))

例:

>>> df = pd.DataFrame({'A':list('aaabbbbccc'), 'B':[1,1,0,1,1,0,0,1,0,0]})
>>> df.groupby('A').sum()
   B
A   
a  2
b  2
c  1
>>> df.groupby('A').apply(lambda x: x[x['B'] > 0]['B'].sum())
A
a    2
b    2
c    1
>>> df.groupby('A').agg(lambda x: np.sum(x[x > 0]))
     B
A     
a  2
b  2
c  1
于 2013-11-07T03:38:22.207 に答える
0

Rとplyrについてはわかりません。以下は、列をグループ化してカウントするのに役立つことを願っていDataFrameます。

df2 = pd.DataFrame({'count' : df.groupby(["groupA","groupB"]).size()}).reset_index()

さらに、それらを並べ替えることができます。

df2.sort_index(by=['count'], ascending=False)
于 2013-11-07T03:55:32.420 に答える