给出以下df:
SequenceNumber | ID | CountNumber | Side | featureA | featureB 0 0 | 0 | 3 | Sell | 4 | 2 1 0 | 1 | 1 | Buy | 12 | 45 2 0 | 2 | 1 | Buy | 1 | 4 3 0 | 3 | 1 | Buy | 3 | 36 4 1 | 0 | 1 | Sell | 5 | 11 5 1 | 1 | 1 | Sell | 7 | 12 6 1 | 2 | 2 | Buy | 5 | 35
我想创建一个新的df,这样对于每一个SequenceNumber值,它都会使用CountNumber == 1获取行,并创建新行,如果Side == 'Buy'将其ID放入名为To的列中。否则,将他们的ID放在名为From的列中。然后,From和To中的空列将采用行的ID和CountNumber > 1(每个SequenceNumber值只有一个)。其余的功能应该保留。
注意:基本上,每个SequenceNumber代表一个交易,该交易有一个卖方和多个买方,反之亦然。我试图创建一个链接买家和卖家的数据库,其中From是卖家ID,To是买家ID。
输出应如下所示:
SequenceNumber | From | To | featureA | featureB 0 0 | 0 | 1 | 12 | 45 1 0 | 0 | 2 | 1 | 4 2 0 | 0 | 3 | 3 | 36 3 0 | 0 | 2 | 5 | 11 4 1 | 1 | 2 | 7 | 12
我实现了一个实现这一点的方法,但我使用的是for循环,这需要很长时间才能在大型数据上运行。我正在寻找一种更快的可扩展方法。有什么建议吗?