为了账号安全,请及时绑定邮箱和手机立即绑定

pandas:使用unix时间戳中的列过滤数据

pandas:使用unix时间戳中的列过滤数据

郎朗坤 2023-08-22 18:28:39
我的一列dataframe包含 unix 时间戳。我正在寻找一种按日期过滤记录的方法,类似于此SQL语句:SELECT * FROM mytable WHERE to_timestamp(log_time) < '2007-04-13';过滤我的dataframe. 数据框中的示例记录如下所示,其中log_time和2007-04-12之间2007-04-13:df.head(10)id  log_time    class154 1176369676  A161 1176369723  E76  1176373591  C97  1176381981  A76  1176415869  C82  1176421986  B 154 1176421986  A163 1176421986  B161 1176421986  D161 1176437973  E
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

  • 为了使用 datetime布尔选择,log_time需要将该列转换为 datetime 列,或者创建一个单独的 datetime 列log_time

  • 对于此数据,使用pandas.to_datetime并指定, 。unit='s'

import pandas as pd


# setup the dataframe

data = {'id': [154, 161, 76, 97, 76, 82, 154, 163, 161, 161],

        'log_time': [1176369676, 1176369723, 1176373591, 1176381981, 1176415869, 1176421986, 1176421986, 1176421986, 1176421986, 1176437973],

        'class': ['A', 'E', 'C', 'A', 'C', 'B', 'A', 'B', 'D', 'E']}


df = pd.DataFrame(data)


# create a datetime column from log_time

df['datetime'] = pd.to_datetime(df.log_time, unit='s')


# display(dflhead())

    id    log_time class            datetime

0  154  1176369676     A 2007-04-12 09:21:16

1  161  1176369723     E 2007-04-12 09:22:03

2   76  1176373591     C 2007-04-12 10:26:31

3   97  1176381981     A 2007-04-12 12:46:21

4   76  1176415869     C 2007-04-12 22:11:09


# select data

selected = df[df.datetime > '2007-04-13']


# display(selected)

    id    log_time class            datetime

9  161  1176437973     E 2007-04-13 04:19:33


查看完整回答
反对 回复 2023-08-22
  • 1 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信