首页 > 解决方案 > 当我尝试通过第三列连接两列时出现问题

问题描述

我有一个 csv 文件,其中包含以下内容:

id_1 id_2 日期
FD345 MER3345 2020 年 6 月 12 日

我想连接 id_1 -> id_2

它们之间的边缘应该是日期,见下图

在此处输入图像描述

见 id_1 它与 id_2 有直接连接的边

他们之间的边缘应该是日期

所以我所做的是这样的:

import networkx as nx
import pandas as pd

df = pd.read_csv('data.csv')

G = nx.from_pandas_edgelist(df, source = "id_1", target = "id_2", edge_attr='date', create_using=nx.DiGraph())

但是以这种方式它没有按日期连接node_1和node_2,它只给出日期属性!

或者我没有正确理解,因为如果我在打印 G.edges() 时确实喜欢这个输出

('UCU6lC', 'vOGN5A'), ........

它连接节点,但我不确定它是否与日期连接!

谢谢你帮我弄清楚一些事情。

标签: networkx

解决方案


您需要使用draw_networkx_edge_labels()来绘制边缘标签。

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt

df = pd.DataFrame({'id_1': ['FD345'],
                   'id_2': ['MER3345'],
                   'date': ['06/12/2020']
                   })

G = nx.from_pandas_edgelist(df, source="id_1", target="id_2", create_using=nx.DiGraph())

nx.draw_networkx(G)
nx.draw_networkx_edge_labels(G, nx.spring_layout(G), edge_labels=dict(zip(G.edges, df['date'].tolist())),
                             verticalalignment='center_baseline')

plt.show()

在此处输入图像描述


推荐阅读