【发布时间】:2017-07-28 15:18:10
【问题描述】:
我有一个 df,id 作为流 ID,dttm 作为 step 修改时间,step 作为流中的步骤。它目前由dttm 订购。特定的id 可以有任意数量的步骤。
当前df:
id dttm step
0 81 2015-05-26 07:56:03 A
1 81 2015-05-26 08:19:07 B
2 81 2015-05-26 08:32:05 C
3 91 2015-05-26 08:07:12 B
4 91 2015-05-26 08:07:12 C
我想创建链接数据以输入 Sankey。因此,我最终想要一个包含三列的 df:source、target 和 value。 value 是具有此类步骤对的 ids 的计数。
所需的df:
source target value
0 A B 1
1 B C 2
我知道我可以用groupby 或cat 将step 填入一行。但是,我认为这只会创建一个不同的起点,而不会真正推进解决方案。困难的部分原因是这些步骤依赖于dttm 来保持有序,以便这些步骤适当地配对。此外,它必须是动态的,因为可能有任意数量的步骤,这增加了难度。
我应该如何动态“填充”step 列以获取链接数据?
有没有办法将 df 连接到自身以获取所有对,然后删除在连接期间创建但无意义的行?
感谢您的所有见解!
【问题讨论】:
-
target的列是什么?如果您只使用 groupby,为什么它需要是动态的。 -
target是流程的下一步。因为groupby会将所有步骤放在一行中(即 A --> B --> C),而不是唯一的对。
标签: python python-3.x pandas dataframe sankey-diagram