python - 从 csv 文件创建网络(Python、Pandas、Networkx)
问题描述
我有一个 csv 文件,我想从中建立一个网络。
我拥有的 csv 文件看起来像这样
公司 | 投资者 |
---|---|
(comp1) | (投资者A) |
(comp2) | (投资者B) |
(comp3) | (投资者C) |
(comp4) | (投资者B,投资者C) |
我在 python 上使用 pandas 和 networkx。
我的网络节点将是每个公司和投资者。
我想如果每一行只有一个投资者(如 comp1~3)我可以让它工作但是,我在有多个投资者的行时遇到了麻烦。
我对编码很陌生。任何帮助,将不胜感激。
解决方案
使用pd.DataFrame.explode
:
df_e = df.explode('Investors')
nx.from_pandas_edgelist(df_e, 'Company', 'Investors')
如果 Investors 是字符串而不是元组,则可以使用以下内容
df['Investors'] = df['Investors'].str.strip('\[|\]').str.split(',')
df_e = df.explode('Investors')
nx.from_pandas_edgelist(df_e, 'Company', 'Investors')
推荐阅读
- antd - 如何在 antd 中获取 Select 选项值
- internet-explorer - 将网页解析为文档时弹出 Cookie(JScript ES3)
- angular - Angular SSR localhost:4000 未打开
- apache-spark - 具有预定义排序的 Spark 流式传输
- mercurial - 创建新的 mercurial 存储库克隆 SINCE 修订版
- html - 如何设置导航高度与圆的高度相同无需硬编码任何值
- c# - TryGetValue 给出不正确的结果
- c# - 无法在 Angularjs 重复指令中显示 WEBAPI 数据
- mysql - Mysql 将查询结果设置到剪贴板(Microsoft SQL Server Management Studio)
- php - 以微秒为单位解析 7 位数字的日期