Pandas:如何按时间戳选择 dataframe 行
您可以使用以下基本语法来选择 pandas DataFrame 中两个时间戳之间的行:
df[(df[' tstamp '] > ' 2022-10-25 04:30:00 ') & (df[' tstamp '] < ' 2022-10-27 11:00:00 ')]
此语法假定tstamp已经具有日期时间类型。
如果没有,您可以使用以下语法将其转换为日期时间列:
df[' tstamp '] = pd. to_datetime (df[' tstamp '])
以下示例展示了如何在实践中使用此语法。
示例:按时间戳选择 Pandas DataFrame 行
假设我们有以下 pandas DataFrame,其中包含有关零售店销售的信息:
import pandas as pd #createDataFrame df = pd. DataFrame ({' tstamp ': ['2022-10-25 04:00:00', '2022-10-25 11:55:12', '2022-10-26 02:00:00', '2022-10-27 10:30:00', '2022-10-27 14:25:00', '2022-10-28 01:15:27'], ' sales ': [18, 22, 19, 14, 14, 11]}) #view DataFrame print (df) tstamp sales 0 2022-10-25 04:00:00 18 1 2022-10-25 11:55:12 22 2 2022-10-26 02:00:00 19 3 2022-10-27 10:30:00 14 4 2022-10-27 14:25:00 14 5 2022-10-28 01:15:27 11
假设我们只想选择以下两个时间戳之间的行:
- 2022-10-25 04:30:00
- 2022-10-27 11:00:00
我们可以使用以下语法来做到这一点:
#convert timestamp column to datetime dtype df[' tstamp '] = pd. to_datetime (df[' tstamp ']) #select rows between two timestamps df[(df[' tstamp '] > ' 2022-10-25 04:30:00 ') & (df[' tstamp '] < ' 2022-10-27 11:00:00 ')] tstamp sales 1 2022-10-25 11:55:12 22 2 2022-10-26 02:00:00 19 3 2022-10-27 10:30:00 14
请注意,仅选择我们指定的两个时间戳之间的行。
另请注意,您可以仅使用日期值按时间戳选择行。
例如,我们可以使用以下代码来选择时间戳大于 2022-10-27 的所有行:
#convert timestamp column to datetime dtype df[' tstamp '] = pd. to_datetime (df[' tstamp ']) #select rows with timestamp after 2022-10-27 df[df[' tstamp '] > ' 2022-10-27 '] tstamp sales 3 2022-10-27 10:30:00 14 4 2022-10-27 14:25:00 14 5 2022-10-28 01:15:27 11
请注意,仅选择tsamp列中的值晚于 2022-10-27 的行。
其他资源
以下教程解释了如何在 pandas 中执行其他常见任务:
如何将 DateTime 转换为 Pandas 中的日期
如何将 Pandas 中的列转换为日期时间
如何按日期对 Pandas DataFrame 进行排序