gpt4 book ai didi

python - 根据重叠目标将多个索引折叠成组

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:31 24 4
gpt4 key购买 nike

我目前正在查看我的数据集中特征之间的相关性,需要将具有相似目标的特征分组到更大的超组中,以用于更一般的相关性分析。

这些特征是一个热编码的,并且在一个看起来类似于这个的 pandas 数据框中:

  1 2 3 4 5 6 7 8 9
A 0 0 1 0 0 1 0 1 0
B 0 0 0 1 0 0 0 0 0
C 1 0 0 0 1 0 0 0 0
D 1 0 0 1 0 0 0 0 0
E 0 1 0 1 0 0 0 0 1

我希望生成的数据框看起来像这样:

               1 2 3 4 5 6 7 8 9
group1(A) 0 0 1 0 0 1 0 1 0
group2(B,D,E,C)1 1 0 1 1 0 0 0 1

我已经尝试过所有形式的 groupby 和 networkx 中的一些方法。

最佳答案

这是一个隐藏的网络问题,所以我们在合并之后使用networkx

s=df.reset_index().melt('index')
s=s.loc[s.value==1]
s=s.merge(s,on = 'variable')

import networkx as nx
G=nx.from_pandas_edgelist(s, 'index_x', 'index_y')


l=list(nx.connected_components(G))
from collections import ChainMap

L=dict(ChainMap(*[dict.fromkeys(y,x) for x, y in enumerate(l)]))


df.groupby(L).sum().ge(1).astype(int)
Out[133]:
1 2 3 4 5 6 7 8 9
0 1 1 0 1 1 0 0 0 1
1 0 0 1 0 0 1 0 1 0

L
Out[134]: {'A': 1, 'B': 0, 'C': 0, 'D': 0, 'E': 0}

关于python - 根据重叠目标将多个索引折叠成组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57148744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com