如何选择date之后的数据,date是各组列的最大值的索引?

2024-05-16 02:59:40 发布

您现在位置:Python中文网/ 问答频道 /正文

            ts_code      low     high
2021-08-01  881105.TI   1485.0  1629.0
2021-08-01  885452.TI   2216.0  2391.0
2021-08-01  885525.TI   7427.0  8552.0
2021-08-01  885641.TI   621.0   671.0
2021-08-08  881105.TI   1496.0  1623.0
2021-08-08  885452.TI   2297.0  2406.0
2021-08-08  885525.TI   7300.0  7868.0
2021-08-08  885641.TI   668.0   691.0
2021-08-15  881105.TI   1606.0  1776.0
2021-08-15  885452.TI   2352.0  2459.0
2021-08-15  885525.TI   7525.0  8236.0
2021-08-15  885641.TI   685.0   719.0
2021-08-22  881105.TI   1656.0  1804.0
2021-08-22  885452.TI   2329.0  2415.0
2021-08-22  885525.TI   7400.0  8270.0
2021-08-22  885641.TI   691.0   720.0

索引的类型是datetime64[ns]

目标

  • 选择日期后的数据,该数据是ts_code组的high列的最大索引

预期的

             ts_code    low      high
2021-08-22  881105.TI   1656.0  1804.0
2021-08-15  885452.TI   2352.0  2459.0
2021-08-22  885452.TI   2329.0  2415.0
2021-08-01  885525.TI   7427.0  8552.0
2021-08-08  885525.TI   7300.0  7868.0
2021-08-15  885525.TI   7525.0  8236.0
2021-08-22  885525.TI   7400.0  8270.0
2021-08-22  885641.TI   691.0   720.0

例如,881105.TI的最大日期为2021-08-22885525.TI的最大日期为2021-08-01。每个ts_code的输出都在相关的最大日期之后

尝试并参考


Tags: 数据类型目标ticodethispostlow
1条回答
网友
1楼 · 发布于 2024-05-16 02:59:40

让我们试试transformidxmax

df1 = df.reset_index()
df1 = df[df.index >= df.groupby('ts_code')['high'].transform('idxmax')]
out = df1[df1.groupby('ts_code').cumcount()<=1]
out
              ts_code     low    high
2021-08-01  885525.TI  7427.0  8552.0
2021-08-08  885525.TI  7300.0  7868.0
2021-08-15  885452.TI  2352.0  2459.0
2021-08-22  881105.TI  1656.0  1804.0
2021-08-22  885452.TI  2329.0  2415.0
2021-08-22  885641.TI   691.0   720.0

相关问题 更多 >