根据Pandas中的时间戳条件选择数据帧的子集



我想在指定的时间戳范围内从数据帧中选择行子集。

下面是我所做的,但它似乎不工作。我试图选择发生在2019年1月1日01:00和2021年1月1日01:00之间的行子集。

谢谢!

df.loc[(df['TIMESTAMP'] == "01/01/2019 01:00"): (df['TIMESTAMP'] == "01/01/2021 01:00")]

我创建了一个测试DataFrame

TIMESTAMP  Amount
0  01/01/2019 00:00   101.0
1  01/01/2019 01:00   102.0
2  01/01/2019 02:00   103.0
3  01/05/2019 01:00   104.0
4  02/02/2020 00:00   105.0
5  01/01/2021 00:00   106.0
6  01/01/2021 01:00   107.0
7  01/01/2021 02:00   108.0
8  01/02/2021 01:00   109.0

注意TIMESTAMP列是对象类型(实际上它保存字符串)。当你使用"/"作为分隔符,我假设使用美国日期格式,即mm/dd/yyyy。第一步是将TIMESTAMP列转换为datetime类型:

df.TIMESTAMP = pd.to_datetime(df.TIMESTAMP)

如果你现在打印df,它将包含:

TIMESTAMP  Amount
0 2019-01-01 00:00:00   101.0
1 2019-01-01 01:00:00   102.0
2 2019-01-01 02:00:00   103.0
3 2019-01-05 01:00:00   104.0
4 2020-02-02 00:00:00   105.0
5 2021-01-01 00:00:00   106.0
6 2021-01-01 01:00:00   107.0
7 2021-01-01 02:00:00   108.0
8 2021-01-02 01:00:00   109.0

(这是Pandas格式化时间戳的方式)。

现在,要获得在预期日期时间范围内的行,请运行:

result = df.query('TIMESTAMP.between("2019-01-01 01:00", "2021-01-01 01:00")')

注意,虽然TIMESTAMP列现在是datetime类型,您可以将日期时间指定为string.

结果是:

TIMESTAMP  Amount
1 2019-01-01 01:00:00   102.0
2 2019-01-01 02:00:00   103.0
3 2019-01-05 01:00:00   104.0
4 2020-02-02 00:00:00   105.0
5 2021-01-01 00:00:00   106.0
6 2021-01-01 01:00:00   107.0

相关内容

  • 没有找到相关文章