如何用Pandas根据DataFrame最后一行的日期过滤时间数据?
过滤Pandas DataFrame,仅保留与最后一行日期相同的行
现有代码通过硬编码日期d筛选DataFrame,需要优化为自动获取最后一行的日期,保留所有与该日期相同的行。
原示例代码
import pandas as pd import datetime data = [ "2014-03-15 12:00:00.000", "2014-03-15 12:10:00.000", "2014-03-18 13:00:00.000", "2014-03-18 13:10:00.000", "2014-03-18 14:10:00.000", "2014-03-18 15:20:00.000" ] df = pd.DataFrame(data,columns=['ts']) df['ts'] = pd.to_datetime(df['ts'],format='%Y-%m-%d %H:%M:%S.%f') print(df) d = datetime.datetime.strptime("2014-03-18 01:00:00.000", '%Y-%m-%d %H:%M:%S.%f') df1 = df[df['ts'] > d] print(df1)
优化方案
通过以下步骤实现自动筛选:
- 获取DataFrame最后一行的日期部分(忽略时分秒)
- 筛选出所有日期与该日期匹配的行
优化后的代码:
import pandas as pd data = [ "2014-03-15 12:00:00.000", "2014-03-15 12:10:00.000", "2014-03-18 13:00:00.000", "2014-03-18 13:10:00.000", "2014-03-18 14:10:00.000", "2014-03-18 15:20:00.000" ] df = pd.DataFrame(data,columns=['ts']) df['ts'] = pd.to_datetime(df['ts'],format='%Y-%m-%d %H:%M:%S.%f') # 获取最后一行的日期(仅日期部分) last_date = df['ts'].iloc[-1].date() # 筛选所有日期匹配的行 df_filtered = df[df['ts'].dt.date == last_date] print(df_filtered)
预期输出
ts 2 2014-03-18 13:00:00 3 2014-03-18 13:10:00 4 2014-03-18 14:10:00 5 2014-03-18 15:20:00
内容的提问来源于stack exchange,提问作者beetlej
相关产品推荐
相关产品推荐

