You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中筛选最大日期/时间对应的数据行?

筛选DataFrame中对应最大日期时间的数据行

问题说明

现有构造好的DataFrame,需筛选出仅对应最大日期/时间的数据行用于后续分析:

原始构造代码

# importing pandas library
import pandas as pd

player_list = [['2022-10-12 12:10',50000,1],
               ['2022-10-12 12:10',51000,1],
               ['2022-10-12 17:10',51500,1],
               ['2022-10-12 17:10',53000,2],
               ['2022-10-13 12:11',57009,2],
               ['2022-10-13 12:11',53001,4],
               ['2022-10-13 17:10',56250,4],
               ['2022-10-13 17:10',54000,4]]

# creating a pandas dataframe
df = pd.DataFrame(
  player_list,columns = ['sanp_date',
                         'hits',
                         'state'])
df['sanp_date'] = df['sanp_date'].astype('datetime64[ns]')

# printing dataframe
print(df)
print()

# checking the type
print(df.dtypes)

当前输出

sanp_date            hits      state
0 2022-10-12 12:10:00  50000      1
1 2022-10-12 12:10:00  51000      1
2 2022-10-12 17:10:00  51500      1
3 2022-10-12 17:10:00  53000      2
4 2022-10-13 12:11:00  57009      2
5 2022-10-13 12:11:00  53001      4
6 2022-10-13 17:10:00  56250      4
7 2022-10-13 17:10:00  54000      4

sanp_date    datetime64[ns]
hits                  int64
state                 int64
dtype: object

期望筛选结果

sanp_date            hits       state
0 2022-10-13 17:10:00  56250      4
1 2022-10-13 17:10:00  54000      4

解决方案

以下是两种高效的实现方式:

方法1:获取最大日期后直接筛选

先提取sanp_date列的最大值,再通过布尔索引筛选对应行:

# 获取最大日期时间
max_datetime = df['sanp_date'].max()
# 筛选对应行
filtered_df = df[df['sanp_date'] == max_datetime]
# 打印结果
print(filtered_df)

方法2:使用query方法简化代码

利用pandas的query方法直接在表达式中计算最大值并完成筛选:

filtered_df = df.query('sanp_date == sanp_date.max()')
print(filtered_df)

两种方法均会输出符合期望的结果,且时间复杂度低,适合处理大规模数据集。

内容的提问来源于stack exchange,提问作者Alan Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:01:06