簡體   English   中英

無論如何,在按熊貓分組的數據框中取消對數據進行分組?

[英]Is there anyway to ungroup data in a grouped-by pandas dataframe?

我有一個數據集,為簡單起見,我需要根據一個列進行分組和匯總,以便可以輕松刪除一些行。 一旦完成計算,我就需要按操作反轉分組,以便可以在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

希望這足夠清楚

提前解凍

我認為轉換成集合不是一個好主意。 這是一種替代方法:首先按Col3降序排序,然后創建Col2 : Yes/No的映射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

我同意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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM