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_datetime
和 pd.Series.between
应该适合你:
filtered_df = df[pd.to_datetime(df['Login Date'].str.split(' ').str[0], format="%Y/%m/%d").between(semester_start, semester_end)]
所以我有一个非常蹩脚的方法并且想改进它并且通常不再使用 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_datetime
和 pd.Series.between
应该适合你:
filtered_df = df[pd.to_datetime(df['Login Date'].str.split(' ').str[0], format="%Y/%m/%d").between(semester_start, semester_end)]