python - python pandas在列中获得不同的匹配
问题描述
我有一个看起来有点像这段代码给出的数据框:
import pandas as pd
data = {'check1': ['a', 'a', 'b', 'd', 'f', 'f', 'g'],
'check2': ['b', 'c', 'c', 'e', 'g', 'h', 'h']}
df = pd.DataFrame (data, columns = ['check1','check2'])
我想要结束的是一个列表或数据框列表或类似的东西,它告诉我两个方向上两列的不同匹配。它会是这样的:
[['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h']]
我已经尝试过这样做,但我无法让它双向使用并合并所有匹配项:
df.groupby('check1').apply(lambda x: x['check2'].unique()).apply(pd.Series).reset_index()
这是我最接近的一次,但它似乎有点像黑客,并且不会在两个方向上都这样做并删除任何重复项。我不知道是否有更合乎逻辑/更优雅的方法。我要到星期二才再次工作,但如果有人在此之前有任何好主意,将不胜感激。
解决方案
尝试认为同一个子列表是一个连接,这样更像是网络问题
import networkx as nx
G=nx.from_pandas_edgelist(df, 'check1', 'check2')
l=list(nx.connected_components(G))
l
Out[133]: [{'a', 'b', 'c'}, {'d', 'e'}, {'f', 'g', 'h'}]
推荐阅读
- javascript - 从 node.js 和 express 将数据保存到 mongoDb 时出现 404 错误
- python - 在sympy中使用符号形式和向量形式的变量?
- selenium - 在弹出窗口中单击子选项后的图像保持不变
- java - 如何使用 Android 电源配置文件 XML 文件来估计系统级电源使用情况?
- r - 迭代:=跨R中的列赋值
- ios - Swift - Firestore 自动创建集合/文档
- php - 在邮递员中使用 php curl 将文件上传到 Nextcloud 但上传的文件为空
- python-3.x - 最佳 Python GloVe 词嵌入包
- reactjs - useEffect 中的无限循环,useEffect 中的 async/await
- python - 尝试用 Python 重新创建一个名为“去波士顿”的骰子游戏