如何读取pandas中时间戳范围内的CSV值?

时间:2017-05-30 03:38:20

标签: python csv pandas

我有一个大型CSV文件,其中包含多个列以及Timestamp列。文件按时间戳的升序排序。

我想将这些值读入pandas数据帧,但仅限于特定时间戳范围内,例如特定日期的下午4:00至下午5:00。

最有效的方法是什么?该文件非常大,我想避免完全通过它,因为它已经排序我希望它在达到上限时间时切断,并且还想避免,手动拆分,是否有使用pandas read_csv函数吗?

的方法
import pandas as pd
df = pd.read_csv('csvfile', header='infer', ???)

2 个答案:

答案 0 :(得分:2)

没有内置方法可以使用read_csv()在时间戳停止。 在这里找到文档:

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

有一种方法可以通过将其分解为块来处理非常大的文件:

http://pandas.pydata.org/pandas-docs/stable/io.html#io-chunking

一种策略是找到最接近时间戳的值是argsort()。获取最接近开始时间的项目的位置,并获得最接近结束时间的项目的位置,然后获取它们之间的值。我不打算为你编码,但我认为这种方法应该有用。

检查出来:How do I find the closest values in a Pandas series to an input number?

答案 1 :(得分:2)

没有办法从read_csv()直接执行此操作,因为它会尝试将整个数据集加载到内存中。我建议您使用csv.readline()方法的标准上下文管理器迭代输入数据的行(请务必告诉csv the proper delimiters ..它可以为您进行拆分(参见python doc中的示例))

或者......您可以将pd.read_csv()应用于每一行(通过设置header=None告诉您数据不包含标题)或只是咬住子弹并使用.split(', “)。

无论哪种方式,您都可以使用.to_datetime()来解析相应列中的日期条目,然后使用.append()将其添加到数据框中。

这可以都是一个while循环,用于测试当前加载的日期何时超出您的范围。