我需要找到一种方法来对一列中具有相同值的行进行分组,但是将行分组到多个列中。 我需要实现的是对代表单个对象的行进行分组,这些对象在不同的服务上具有不同的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放在一起。
我正在寻找想法/解决方案。 谢谢。
答案 0 :(得分:0)
还没有找到一个完整的熊猫解决方案,我决定通过使用networkx模块并使用connected_component_subgraphs函数提取子图,然后将结果解压缩到一个数据框中来做到这一点。没那么优雅,但是可以。