Dom*_*ikS 5 python pandas pandas-groupby
在熊猫中,我有以下形式的数据框:
>>> import pandas as pd
>>> df = pd.DataFrame({'ID':[51,51,51,24,24,24,31], 'x':[0,1,0,0,1,1,0]})
>>> df
ID x
51 0
51 1
51 0
24 0
24 1
24 1
31 0
Run Code Online (Sandbox Code Playgroud)
对于每个“ ID”,多次记录“ x”的值,它的值是0或1。我想从中选择那些df包含“ x”至少为1的“ ID”的行。
对于每个“ ID”,我设法计算“ x”为1的次数,
>>> df.groupby('ID')['x'].sum()
ID
51 1
24 2
31 0
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何从这里开始。我想要以下输出:
ID x
24 0
24 1
24 1
Run Code Online (Sandbox Code Playgroud)
使用groupby和filter
df.groupby('ID').filter(lambda s: s.x.sum()>=2)
Run Code Online (Sandbox Code Playgroud)
输出:
ID x
3 24 0
4 24 1
5 24 1
Run Code Online (Sandbox Code Playgroud)
df = pd.DataFrame({'ID':[51,51,51,24,24,24,31], 'x':[0,1,0,0,1,1,0]})
df.loc[df.groupby(['ID'])['x'].transform(func=sum)>=2,:]
out:
ID x
3 24 0
4 24 1
5 24 1
Run Code Online (Sandbox Code Playgroud)