微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从紧凑的熊猫数据框创建图形的最佳方法是什么?

如何解决从紧凑的熊猫数据框创建图形的最佳方法是什么?

我有每个商店的邮政编码数据集和附近的邮政编码数据集。如下所示:

邮政编码 近PC 旅行时间
L2L 3J9 [N1K 0A1'、'N1K 0A2'、'N1K 0A3'、'N1K 0A4'、'... [nan,nan,9,5,nan...]

我知道我可以分解数据,但这会导致多出约 4000 万行。我可以执行的另一个预处理步骤是删除每个列表中旅行时间不可用的值。但是,我需要将其从 NearPC 列表中删除

有没有办法合并 networkx 来创建这个图?我试过使用

G = nx.from_pandas_edgelist(df,'near_PC','PostalCode',['TravelTime']) 但我认为它不允许将列表作为源或目标。

TypeError: unhashable type: 'list'

有没有办法解决这个问题?如果不是,我如何以有效的方式基于条件删除每行列表的相同索引?

解决方法

您已经确定了您的问题,尽管您可能没有意识到。你有一个有 40M 边的图,但你适当地避免了表格爆炸。您必须以某种形式对爆炸进行编码,因为您的图形需要所有 40M 边。

为了节省多少麻烦,我建议您为边编写一个简单的生成器表达式:从 PostalCode 中取出一个节点,遍历另一个节点的 nearPC 列表。让 Python 和 NetworkX 担心内联扩展。

您可以根据生成的格式切换调用的 nx 构建方法。您确实在某种程度上减慢了处理速度,但爆炸细节隐藏在语言语法中。此外,如果该生成器和 nx 方法之间存在任何内置并行化,您将隐含地获得该优势。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。