Pandas 在单列上过滤多个条件

Pandas Filtering Multiple Conditions on Single Column

所以我有一个非常蹩脚的方法并且想改进它并且通常不再使用 iterrows,据我所知这只是不好的做法。

我基本上想检查 'Login Date' 列中的值是否属于日期时间对象的范围。

这是我的烂atm方法。

for index, row in df.iterrows():
if semester_start <= datetime.strptime(row['Login Date'].split(' ')[0], "%Y/%m/%d") <= semester_end:
    index_list.append(index)

filtered_df = df[df.index.isin(index_list)]

我认为使用 pd.to_datetimepd.Series.between 应该适合你:

filtered_df = df[pd.to_datetime(df['Login Date'].str.split(' ').str[0], format="%Y/%m/%d").between(semester_start, semester_end)]