首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
V2EX  ›  Python

使用 pandas 筛选时间数据

  •  
  •   kayseen · 13 天前 · 875 次点击

    如下的一个 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
        1
    wangkai0351   13 天前
    咱不能读一遍 api 吗
        2
    yulewg   13 天前
    df[df.time=='2019-09-02 03:29:15']
        3
    kayseen   13 天前 via Android
    @yulewg 请问可以只精确到分钟吗?就是不看后面的秒数。因为在筛选的时候,只知道分钟是多少,是不知道秒数的。。
        4
    lithiumii   13 天前 via Android
    先读成 dataframe,pandas 会自动把时间转成 datetime 类型,然后就可以只读分钟了
        5
    hjq98765   13 天前
    @kayseen #3 原文:“@yulewg 请问可以只精确到分钟吗?就是不看后面的秒数。因为在筛选的时候,只知道分钟是多少,是不知道秒数的。。”
    ======
    回复:df[df.time.map(lambda x:x.startswith('2019-09-02 03:29'))]
        6
    kayseen   13 天前
    @lithiumii 呃呃呃,先 pd.read_csv('a.txt', sep=',', delimiter=None)读取之后,关于 time 的是怎么读的额...
        7
    kayseen   13 天前
    @hjq98765 感谢感谢,麻烦再问下,关于这个文件,我怎么往里面追加一条数据呢?
    比如在后面在追加一条数据 `2019-09-09 03:30:16,35,35,15`
    我在网上找了下都是类似先读取文件再追加的,没找到这种追加单条数据的,
    请教下,感谢~
        8
    ike   13 天前
    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]
        9
    hjq98765   13 天前
    @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'是追加的意思
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   736 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 21:22 · PVG 05:22 · LAX 14:22 · JFK 17:22
    ♥ Do have faith in what you're doing.