使用 pandas 筛选时间数据

2019-09-09 18:15:38 +08:00
 kayseen

如下的一个 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 中时间应该怎么筛选呢?

5226 次点击
所在节点    Python
9 条回复
wangkai0351
2019-09-09 18:20:03 +08:00
咱不能读一遍 api 吗
yulewg
2019-09-09 18:21:31 +08:00
df[df.time=='2019-09-02 03:29:15']
kayseen
2019-09-09 18:39:27 +08:00
@yulewg 请问可以只精确到分钟吗?就是不看后面的秒数。因为在筛选的时候,只知道分钟是多少,是不知道秒数的。。
lithiumii
2019-09-09 18:44:25 +08:00
先读成 dataframe,pandas 会自动把时间转成 datetime 类型,然后就可以只读分钟了
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
2019-09-09 19:07:59 +08:00
@lithiumii 呃呃呃,先 pd.read_csv('a.txt', sep=',', delimiter=None)读取之后,关于 time 的是怎么读的额...
kayseen
2019-09-09 19:14:00 +08:00
@hjq98765 感谢感谢,麻烦再问下,关于这个文件,我怎么往里面追加一条数据呢?
比如在后面在追加一条数据 `2019-09-09 03:30:16,35,35,15`
我在网上找了下都是类似先读取文件再追加的,没找到这种追加单条数据的,
请教下,感谢~
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
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'是追加的意思

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/599393

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX