我有一个数据集,为了简单起见,我需要分组并基于一列聚合,以便我可以轻松删除一些行。完成计算后,我需要通过操作来反转组,以便我可以在excel中轻松查看数据框。如果我不反转动作,我会将整个列表导出到excel,这不容易分析。任何帮助都非常感激。
示例:
Col1 Col2 Col3
123 11 Yes
123 22 Yes
256 33 Yes
256 33 No
337 00 No
337 44 No
应用groupby和聚合后:
X=dataset.groupby('Col1').agg(lambda x:set(x)).reset_index()
我得到了
Col1 Col2 Col3
123 {11,22} {Yes}
256 {33} {Yes, No}
337 {00,44} {No}
然后我使用drop
删除包含Yes的所有列X=X.reset_index(drop=True)
在导出到excel之前我需要获得的是
Col1 Col2 Col3
337 00 No
337 44 No
希望这很清楚
事先提前
答案 0 :(得分:1)
我不相信转换成一套是个好主意。以下是另一种选择:首先按num_classes
降序排序,然后创建Col3
的映射并根据该值进行过滤。
Col2 : Yes/No
答案 1 :(得分:1)
我同意COLDSPEED。您不需要转换为设置
df['Temp']=df.Col3.eq('Yes')
DF=df.groupby('Col1')['Temp'].sum()
df[df.Col1==DF.index[DF==0].values[0]].drop('Temp',axis=1)
Out[113]:
Col1 Col2 Col3
4 337 0 No
5 337 44 No