gpt4 book ai didi

Python Pandas - 创建包含节点对和边强度的 DataFrame

转载 作者:行者123 更新时间:2023-11-28 18:15:02 26 4
gpt4 key购买 nike

我正在创建一个简单的网络图,但在将我的数据设置为正确的形状时遇到了一些问题。

我有一个包含两列的 Pandas DataFrame,其中包含有关不同实体之间协作的信息。 Project_ID 列列出了项目的 ID,Participating_entity 列列出了参与该项目的一个实体。具有 3 个实体的项目将占用 3 行。这是一个简单的 DF 示例,列出了 3 个项目中 3 个实体之间的协作:

df =  pd.DataFrame([[1,'a'],[1,'b'],[2,'a'],[2,'c'],[3,'a'],[3,'b'],[3,'c']],  columns = ['Project_ID','Participating_entity']) 

#|---------------------|-------------------------|
#| Project_ID | Participating_entity |
#|---------------------|-------------------------|
#| 1 | A |
#| 1 | B |
#| 2 | A |
#| 2 | C |
#| 3 | A |
#| 3 | B |
#| 3 | C |
#|---------------------|-------------------------|

我想创建一个新的 DF,显示 Participating_entity 对之间的协作数量。对于上面的简单数据。

#|-------------|-----------|--------------------|
#| Entity_1 | Entity_2 | Num_collaborations |
#|-------------|-----------|--------------------|
#| A | B | 2 |
#| A | C | 2 |
#| B | C | 1 |
#|-------------|-----------|--------------------|

A 与 B 和 C 各合作了两次。B 和 C 合作了一次。协作应仅列出一次。例如,A 和 B 之间的连接应仅列在 A-B 下,B-A 不应存在任何行。

提前致谢!

最佳答案

你能做到directly in NetworkX :

In [210]: G = nx.from_pandas_edgelist(df, 'Project_ID', 'Participating_entity')

In [211]: from networkx.algorithms import bipartite

In [212]: W = bipartite.weighted_projected_graph(G, df['Participating_entity'].unique())

In [213]: W.edges(data=True)
Out[213]: EdgeDataView([('a', 'c', {'weight': 2}), ('a', 'b', {'weight': 2}), ('b', 'c', {'weight': 1})])

关于Python Pandas - 创建包含节点对和边强度的 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48856713/

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