如何筛选DataFrame中处于两个指定时间戳之间的行?
Pandas筛选时间戳范围内的DataFrame行
我有一个包含大量行列的大型DataFrame,需要筛选出时间戳处于指定范围内的所有行。原始DataFrame如下:
timestamp data size price 1690000000000000000 1 100 55 170000000000000000 5 20 100 1680000000000000000 5 55 44 1620000000000000000 4 4 33 1650000000000000000 10 4 1 1640000000000000000 15 2 99
需要筛选出时间戳在1640000000000000000至1680000000000000000之间的行,期望结果如下:
timestamp data size price 1680000000000000000 5 55 44 1650000000000000000 10 4 1 1640000000000000000 15 2 99
解决方案
方法一:布尔索引
直接通过比较运算符构造筛选条件,快速定位符合范围的行:
import pandas as pd # 构造原始DataFrame df = pd.DataFrame({ 'timestamp': [1690000000000000000, 170000000000000000, 1680000000000000000, 1620000000000000000, 1650000000000000000, 1640000000000000000], 'data': [1, 5, 5, 4, 10, 15], 'size': [100, 20, 55, 4, 4, 2], 'price': [55, 100, 44, 33, 1, 99] }) # 定义时间范围边界 start_ts = 1640000000000000000 end_ts = 1680000000000000000 # 筛选符合条件的行 filtered_df = df[(df['timestamp'] >= start_ts) & (df['timestamp'] <= end_ts)] print(filtered_df)
方法二:使用between()方法
Pandas内置的between()方法可以更简洁地实现范围筛选,效果和布尔索引一致:
filtered_df = df[df['timestamp'].between(start_ts, end_ts)] print(filtered_df)
两种方法都能高效处理大型DataFrame,快速得到目标结果。
内容的提问来源于stack exchange,提问作者ifrj
相关产品推荐
相关产品推荐

