Pandas基于首尾行对比过滤DataFrame 解决列长度不一致报错
实现方案
首先需将时间列转为datetime类型避免字符串比较错误,再按需求实现两个过滤逻辑即可,完整代码如下:
import pandas as pd # 构造示例数据 df1 = pd.DataFrame({ "Startdate": ["2020-06-07 00:00", "2020-08-07 00:01", "2020-10-11 00:35", "2020-11-24 00:03"] }) df2 = pd.DataFrame({ "Stopdate": ["2020-06-06 12:00", "2020-08-06 11:01", "2020-10-10 00:20"] }) # 转换时间格式 df1['Startdate'] = pd.to_datetime(df1['Startdate']) df2['Stopdate'] = pd.to_datetime(df2['Stopdate']) # 处理首行过滤逻辑 if df1.iloc[0, 0] > df2.iloc[0, 0]: df1 = df1.iloc[1:].reset_index(drop=True) # 处理末行过滤逻辑 if df1.iloc[-1, 0] < df2.iloc[-1, 0]: df2 = df2.iloc[:-1].reset_index(drop=True)
说明
- 示例数据处理后df1会删除首行,最终两个DataFrame行数均为3,满足后续间隔时长计算要求
- 方案无需硬编码行数,只要两个DataFrame都至少有1行数据即可正常运行。如果存在空表场景,可在两个判断前增加
if len(df1) > 0 and len(df2) > 0的前置校验即可。
内容的提问来源于stack exchange,提问作者Mel
相关产品推荐
相关产品推荐

