无论如何,在分组的pandas数据帧中取消组合数据?

时间:2017-08-22 01:52:59

标签: python pandas dataframe group-by pandas-groupby

我有一个数据集,为了简单起见,我需要分组并基于一列聚合,以便我可以轻松删除一些行。完成计算后,我需要通过操作来反转组,以便我可以在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

希望这很清楚

事先提前

2 个答案:

答案 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