V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
kayseen
V2EX  ›  Python

使用 pandas 筛选时间数据

  •  
  •   kayseen · 2019-09-09 18:15:38 +08:00 · 5274 次点击
    这是一个创建于 1934 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如下的一个 txt 文件,内容如下:

    time,tmp,water,light
    2019-09-02 03:23:09,28,28,8
    2019-09-02 03:24:10,29,29,9
    2019-09-02 03:25:11,30,30,10
    2019-09-02 03:26:12,31,31,11
    2019-09-02 03:27:13,32,32,12
    2019-09-02 03:28:14,33,33,13
    2019-09-02 03:29:15,34,34,14
    2019-09-02 03:30:16,35,35,15
    

    使用逗号来分割每个数据,每一行是一组数据,这些数据是每一分钟新增一条,time 列就是时间, 请问可以通过日期来筛选一条数据吗? 比如需要筛选出:2019-09-02 03:29:15,34,34,14这条 03:29 分的数据, 请教一下,在 pandas 中时间应该怎么筛选呢?

    9 条回复    2019-09-09 21:18:11 +08:00
    wangkai0351
        1
    wangkai0351  
       2019-09-09 18:20:03 +08:00
    咱不能读一遍 api 吗
    yulewg
        2
    yulewg  
       2019-09-09 18:21:31 +08:00
    df[df.time=='2019-09-02 03:29:15']
    kayseen
        3
    kayseen  
    OP
       2019-09-09 18:39:27 +08:00 via Android
    @yulewg 请问可以只精确到分钟吗?就是不看后面的秒数。因为在筛选的时候,只知道分钟是多少,是不知道秒数的。。
    lithiumii
        4
    lithiumii  
       2019-09-09 18:44:25 +08:00 via Android
    先读成 dataframe,pandas 会自动把时间转成 datetime 类型,然后就可以只读分钟了
    hjq98765
        5
    hjq98765  
       2019-09-09 18:54:59 +08:00
    @kayseen #3 原文:“@yulewg 请问可以只精确到分钟吗?就是不看后面的秒数。因为在筛选的时候,只知道分钟是多少,是不知道秒数的。。”
    ======
    回复:df[df.time.map(lambda x:x.startswith('2019-09-02 03:29'))]
    kayseen
        6
    kayseen  
    OP
       2019-09-09 19:07:59 +08:00
    @lithiumii 呃呃呃,先 pd.read_csv('a.txt', sep=',', delimiter=None)读取之后,关于 time 的是怎么读的额...
    kayseen
        7
    kayseen  
    OP
       2019-09-09 19:14:00 +08:00
    @hjq98765 感谢感谢,麻烦再问下,关于这个文件,我怎么往里面追加一条数据呢?
    比如在后面在追加一条数据 `2019-09-09 03:30:16,35,35,15`
    我在网上找了下都是类似先读取文件再追加的,没找到这种追加单条数据的,
    请教下,感谢~
    ike
        8
    ike  
       2019-09-09 19:17:55 +08:00
    import pandas as pd

    df = pd.read_csv("test.txt", parse_dates=['time'])
    idx = df.time.apply(lambda x: x.hour == 3 and x.minute==29)
    df[idx]
    hjq98765
        9
    hjq98765  
       2019-09-09 21:18:11 +08:00
    @kayseen #7 原文:“@hjq98765 感谢感谢,麻烦再问下,关于这个文件,我怎么往里面追加一条数据呢? 比如在后面在追加一条数据 `2019-09-09 03:30:16,35,35,15`我在网上找了下都是类似先读取文件再追加的,没找到这种追加单条数据的,请教下,感谢~”
    ======
    回复:

    with open('a.txt','a') as f:
    a.write('2019-09-09 03:30:16,35,35,15'+'\n')

    你可以看一下 open()的 mode 参数,'a'是追加的意思
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3059 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:52 · PVG 20:52 · LAX 04:52 · JFK 07:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.