簡體   English   中英

在多列上將具有相同列值的行分組

[英]Grouping rows with same column value on multiple columns

我需要找到一種方法來對一列中具有相同值的行進行分組,但是將行分組到多個列中。 我需要實現的是對代表單個對象的行進行分組,這些對象在不同的​​服務上具有不同的ID。

我有一個看起來像的熊貓數據框

SERV1 SERV2 SERV3 SERV4 SERV5 SERV6
8766  NaN   NaN   0989  NaN   NaN   
8766  NaN   5434  NaN   NaN   NaN   
NaN   NaN   5434  3212  NaN   NaN   
NaN   1236  NaN   NaN   NaN   6543
NaN   3456  NaN   7862  NaN   NaN   
NaN   NaN   NaN   7862  NaN   4767

所需的數據框應該看起來像

SERV1   SERV2   SERV3   SERV4         SERV5   SERV6
[8766]  NaN     [5434]  [0989,3212]   NaN     NaN
NaN     [1236]  NaN     NaN           NaN     [6543]   
NaN     [3456]  NaN    [7862]         NaN     [4767]

列代表不同的服務,值代表僅對於該特定列而言唯一的ID(不同列上的相同值,可能會偶然發生,但不應視為代表相同的ID)。

我設法為每一列創建一個具有相應值的字典,但這與我想要的df不同。

通過使用

df = grouped.aggregate(lambda x: tuple(x))

我可以實現類似的功能,但它僅適用於將單個列分組,而不是將其鏈接到其他列,而是將所有實際上不屬於一起的NaN放在一起。

我正在尋找想法/解決方案。 謝謝。

尚未找到一個完整的熊貓解決方案,我已解決此問題,方法是使用networkx模塊,並使用connected_component_subgraphs函數提取子圖,然后將結果拆包到數據框中。 不是那么優雅,但它可以工作。

暫無
暫無

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

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