有没有办法取消分组熊猫数据框中的数据分组?

问题描述 投票:0回答:2

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

希望这足够清楚

提前致谢

python pandas dataframe group-by pandas-groupby
2个回答
1
投票

我不认为转换为一套是个好主意。这是另一种选择:首先按

Col3
降序排序,然后创建
Col2 : Yes/No
的映射并基于该映射进行过滤。

In [1191]: df = df.sort_values('Col3', ascending=True)

In [1192]: mapping = dict(df[['Col2', 'Col3']].values)

In [1193]: df[df.Col2.replace(mapping) == 'No'] # or df.Col2.map(mapping)
Out[1193]: 
   Col1  Col2 Col3
4   337     0   No
5   337    44   No

1
投票

我同意冷速。您不需要转换为set

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
© www.soinside.com 2019 - 2024. All rights reserved.