簡體   English   中英

熊貓:groupby和聚合,而不會丟失被分組的列

[英]pandas: groupby and aggregate without losing the column which was grouped

我有一個熊貓數據框如下。 對於每個ID,我可以有多個名稱和子ID。

Id      NAME   SUB_ID
276956  A      5933
276956  B      5934
276956  C      5935
287266  D      1589

我想壓縮數據框,以便每個id只有一行,並且每個id下的所有名稱和sub_ids在該行上都顯示為單數形式

Id      NAME           SUB_ID
276956  set(A,B,C)     set(5933,5934,5935)
287266  set(D)         set(1589) 

我嘗試對ID進行分組,然后匯總所有其他列

df.groupby('Id').agg(lambda x: set(x))

但是這樣做的結果是數據框沒有Id列。 當您進行groupby時,id作為元組的第一個值返回,但是我猜您聚合時會丟失。 有沒有一種方法可以獲取我要尋找的數據框。 那就是分組和聚集而不丟失被分組的列。

如果您不希望groupby作為索引,可以使用一個參數來避免進一步重置:

df.groupby('Id', as_index=False).agg(lambda x: set(x))

groupby列成為索引。 您只需重置索引即可將其取回:

In [4]: df.groupby('Id').agg(lambda x: set(x)).reset_index()
Out[4]: 
       Id       NAME              SUB_ID
0  276956  {A, C, B}  {5933, 5934, 5935}
1  287266        {D}              {1589}

暫無
暫無

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

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