当前位置: 首页 > 知识库问答 >
问题:

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

闻人鸿文
2023-03-14

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

下面是我所做的,但它似乎没有工作。我正在尝试选择发生在01/01/2019 01:00和01/01/2021 01:00之间的行子集。

非常感谢。

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

共有1个答案

法镜
2023-03-14

我创建了一个测试数据帧,如下所示:

          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。

第一步是将时间戳列转换为日期时间类型:

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

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

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

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

注意,虽然TIMESTAMP列现在是datetime类型,但您可以将datetime指定为字符串。

结果是:

            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
 类似资料:
  • 在Pandas的数据框中,一些列是数字的,像浮动;一些是非数字的,像对象。我们希望删除那些数值列为NaN的行,但不删除那些非数值列为NaN的行。 例如,对于具有四列的df:a、B、C和D。a和C的数据类型为Object,B和D的数据类型为Float。 我们将只删除其中一些数字列(浮点数)为NaN的行,而不应该删除其中一些非数字列(对象)为NaN的行。 最终结果如下: 我的步骤是: 检查哪些列的数据

  • 假设我创建了一个熊猫数据帧 现在我正在运行一个像这样的选择 问题是:我如何将这个结果导出/保存到一个CSV文件? 预先默许 a

  • 这不是一个重复的问题,但类似于 根据pandas中列中的值从数据帧中选择行

  • 说明 pika新版binlog有时间戳,开发binlog_sender工具,根据输入的时间段回放对应数据到某个pika实例 工具目录: pika/tools/binlog_tools/binlog_sender 使用参数: -h -- 显示帮助 -t -- l 显示日志类型,old 或new -i -- pika实例的ip -p -- pika实例的port -n -- 输入的binlog的路径

  • 在编程方面,我是一个新手,特别是熊猫。我也很抱歉,我问了一个已经在SF上提到的问题:我并不真正理解这个问题的现有答案。可能重复,但这个答案对新手来说很容易理解,如果不太全面的话。