如果create_date字段不对应于from_date和to_date之间的期间,我只想使用group by'indicator'提取大型索引记录,并对应于from_date和end_date之间的期间.

from_date = '2022-01-01'
to_date = '2022-04-10'

   indicator    create_date
0      A         2022-01-03
1      B         2021-12-30
2      B         2021-07-11
3      C         2021-02-10
4      C         2021-09-08
5      C         2021-07-24
6      C         2021-01-30

以下是我想要的结果:

   indicator   create_date
0      A         2022-01-03
2      B         2021-07-11
6      C         2021-01-30

我一直在寻找解决方案,但我只找到了一种方法"如何获得最小值的索引",我找不到一种方法来比较索引数.

推荐答案

您可以为每indicator个由DataFrameGroupBy.idxmax创建的最大索引值创建帮助器列,最后一个由DataFrame.loc Select 行:

df2 = df.loc[df.assign(tmp=df.index).groupby('indicator')['tmp'].idxmax()]
print (df2)
  indicator create_date
0         A  2022-01-03
2         B  2021-07-11
6         C  2021-01-30

编辑:如果需要,请仅根据from_date, to_date之间的不匹配值查看LCT最大索引,使用boolean indexing和join by concat:

from_date = '2022-01-01'
to_date = '2022-04-10'

df['create_date'] = pd.to_datetime(df['create_date'])

m = df['create_date'].between(from_date, to_date)

df2 = df.loc[df.assign(tmp=df.index)[~m].groupby('indicator')['tmp'].idxmax()]
print (df2)
  indicator create_date
2         B  2021-07-11
6         C  2021-01-30

df = pd.concat([df[m], df2])
print (df)
  indicator create_date
0         A  2022-01-03
2         B  2021-07-11
6         C  2021-01-30

Python相关问答推荐

查找两极rame中组之间的所有差异

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

加速Python循环

如何从.cgi网站刮一张表到rame?

如何指定列数据类型

matplotlib + python foor loop

在输入行运行时停止代码

Beautifulsoup:遍历一个列表,从a到z,并解析数据,以便将其存储在pdf中.

如何在GEKKO中使用复共轭物

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

如何在Airflow执行日期中保留日期并将时间转换为00:00

每次查询的流通股数量

随机森林n_估计器的计算

如何删除剪裁圆的对角线的外部部分

将时间序列附加到数据帧

将参数从另一个python脚本中传递给main(argv

如何计算Pandas 中具有特定条件的行之间的天差

以元组为索引的Numpy多维索引

如何在polars group_by中将多个行分组到列表中

有条件的滚动平均数(面试问题)