【发布时间】:2020-08-14 13:14:27
【问题描述】:
我的数据框如下所示:
date id pct_change
12355258 2010-07-28 60059 0.210210
12355265 2010-07-28 60060 0.592000
12355282 2010-07-29 60059 0.300273
12355307 2010-07-29 60060 0.481982
12355330 2010-07-28 60076 0.400729
我想用列“目标”、“源”、“权重”来编写它,其中: 'target' 和 'source' 都是 'id','weights' 计算 'target' 和 'source' 同时改变价格的天数。所以它看起来像:
target source weights
60059 60060 2
60059 60076 1
60060 60076 1
我的目标是使用此数据框制作 networkx 图。
我尝试过使用 groupby
df.groupby(['date','id'])['id'].unique().value_counts()
df.groupby(['date','id'])['id'].count()
和 for 循环(很糟糕)。
我觉得我在 groupby 中错过了一小步,但不知道错过了什么。
感谢您的帮助。
【问题讨论】:
-
12,177,535 行,24,800 个单独的 'id's
-
如果你想要 2 个 id 的所有组合,那么有这么多单个 id 的问题,你会得到大约 3 亿行,我觉得 pandas 执行这样的操作会很麻烦,甚至存储“常规”计算机内存的结果可能太多
-
我在数据集中有一个替代变量,它有 26 个类别而不是 24800 个。这可行吗?
-
抱歉又打扰了...您知道为 'id' 做这件事的方法吗?使用“类别”变量,网络已完全连接,我无法进行任何进一步分析。
-
只有 26 个类别而不是 25K 个 ID 才有意义,尤其是在有这么多日期的情况下,您将获得一个全连接的网络。老实说,我不确定计算机上有这么多数据是否可行。对不起
标签: python pandas dataframe graph networkx