【发布时间】:2022-01-12 18:33:05
【问题描述】:
我有一个数据框,它是筛选所有 S&P500 股票的结果,并且正在对筛选期间发现的一些 SOS 信号以及每个信号出现的日期进行分类。
对于这个数据框,我应用了以下过滤器,因为我只想关注具有这些信号的股票:测试每个股票的上涨、吸收量、停止量
s = {'Stopping Vol', 'Absorption Vol', 'Test in Rising'}
df.groupby('Ticker').filter(lambda sf: s.issubset(sf['SOS']))
这是输出:
Ticker SOS Date frequency
756 BXSL Test in Rising 2021-12-21 11
757 BXSL Stopping Vol 2021-12-27 11
758 BXSL Stopping Vol 2021-12-28 11
759 BXSL Selling Climax 2021-12-28 11
760 BXSL Shakeout 2021-12-28 11
761 BXSL Absorption Vol 2021-12-30 11
762 BXSL Bag Holding 2021-12-30 11
763 BXSL Test in Rising 2021-12-30 11
764 BXSL Stopping Vol 2022-01-03 11
765 BXSL Absorption Vol 2022-01-06 11
766 BXSL Test in Rising 2022-01-06 11
5057 WDAY Test in Rising 2021-12-16 9
5058 WDAY Test 2021-12-20 9
5059 WDAY Test in Rising 2021-12-20 9
5060 WDAY Test in Rising 2021-12-22 9
5061 WDAY Test in Rising 2021-12-29 9
5062 WDAY Stopping Vol 2022-01-04 9
5063 WDAY Selling Climax 2022-01-04 9
5064 WDAY Shakeout 2022-01-04 9
5065 WDAY Absorption Vol 2022-01-05 9
1167 CROX Stopping Vol 2021-12-17 9
我现在遇到的问题是,我只想要那些满足这些信号的代码,但我还想按出现日期保持信号的顺序。我只想在我首先看到 Stopping Vol 信号,然后是 Absorption Vol 信号,最后是 Test in Rising 信号时才显示 Ticker。中间有没有其他信号都没关系,我只想保持它们之间的顺序。
所以输出类似于:
Ticker SOS Date frequency
756 JPGY Selling Climax 2021-12-21 11
757 JPGY Stopping Vol 2021-12-27 11
758 JPGY Other signal 2021-12-28 11
761 JPGY Absorption Vol 2021-12-30 11
763 JPGY Test in Rising 2021-12-31 11
我怎样才能得到这个?
我正在查看其他问题,但不知道如何进行。 pandas groupby sort within groups
【问题讨论】: