Python 组2列,并基于组值取基于特定值的组
我的代码:Python 组2列,并基于组值取基于特定值的组,python,pandas,Python,Pandas,我的代码: data = pd.DataFrame({'a': [1,2,3,4,5,6,7,8], 'group': [1,1,1,1,2,2,2,2], 'check':[0.5, 0.5,0.5,0.3,0.3,0.3,0.2,0.2]}) 输出: data.groupby(['group','check']).size() group check 1 0.3 1 0.5
data = pd.DataFrame({'a': [1,2,3,4,5,6,7,8],
'group': [1,1,1,1,2,2,2,2],
'check':[0.5, 0.5,0.5,0.3,0.3,0.3,0.2,0.2]})
输出:
data.groupby(['group','check']).size()
group check
1 0.3 1
0.5 3
2 0.2 2
0.3 2
dtype: int64
我希望得到
因为我们有“1”组和“2”组
基于上述结果,我只想选择第二组或1以上的任何组(如果我们有两个以上的组)
示例输出:
group check
2 0.2 2
0.3 2
dtype: int64
您可以执行以下操作。因此,在这里,我们获取单个
组
,并获取组键在第0个元素中没有1的所有项目。每个键都是一个元组(group\u id,check\u val)
,然后将它们缩回并执行groupby
grps = [grp for k, grp in data.groupby(['group','check']).groups.items() if k[0]!=1]
new_df = pd.concat([data.loc[g] for g in grps]).groupby(['group', 'check']).size()
这就给了,
group check
2 0.2 2
0.3 2
dtype: int64
备选案文2:
小组都是数字吗?非常感谢,先生,这真的很有帮助。顺便问一下,你认为有没有其他方法可以使用pandas函数应用它?@Anonymous,那么你的意思是用另一种方法?回顾您的问题,您不能删除
group=1的所有元素,然后执行groupby吗?
new_df = data.loc[(data['group']!=1)].groupby(['group', 'check']).size()