如何使用pandas筛选要加载到内存中的CSV行?这似乎是一个应该在read\u csv
中找到的选项。我错过什么了吗?
示例:我们有一个带有时间戳列的CSV,我们只想加载时间戳大于给定常量的行。
如果过滤范围是连续的(通常与时间(戳记)过滤器一样),那么最快的解决方案是硬编码行范围。只需将skiprows=range(1,开始行)
与nrows=end\u行
参数组合即可。然后导入需要几秒钟,而接受的解决方案需要几分钟。考虑到导入时间的节省,对初始起始行进行一些实验并不是一个巨大的成本。请注意,我们使用
范围(1,…)
保留了标题行。
在read\u csv
的上下文中,我没有找到一种直接的方法来做这件事。但是,read\u csv
返回一个数据帧,可以通过按布尔向量选择行来过滤数据帧df[bool\u vec]
:
filtered = df[(df['timestamp'] > targettime)]
这是选择df中的所有行(假设df是任何数据帧,例如读取_csv
调用的结果,该调用至少包含一个datetime列timestamp
),其中timestamp
列中的值大于targettime的值。类似的问题。
在将CSV文件加载到熊猫对象之前,没有筛选行的选项。
您可以加载文件,然后使用df[df['field']进行过滤
import pandas as pd
iter_csv = pd.read_csv('file.csv', iterator=True, chunksize=1000)
df = pd.concat([chunk[chunk['field'] > constant] for chunk in iter_csv])
您可以根据可用内存更改
chunksize
。更多详情请见此处。
我正在读取一个包含多个datetime列的csv文件。我需要在读取文件时设置数据类型,但datetimes似乎是个问题。例如: 运行时出现错误: 不理解数据类型"datetime" 通过pandas在事实之后转换列。to_datetime()不是一个选项,我不知道哪些列将成为datetime对象。这些信息可以更改,并且来自于通知我的数据类型列表的任何信息。 或者,我尝试用numpy.genfrom
问题内容: 我将Python 3.4与IPython结合使用,并具有以下代码。我无法从给定的URL读取csv文件: 我有以下错误 “预期的文件路径名或类似文件的对象,得到了类型” 我怎样才能解决这个问题? 问题答案: 更新资料 现在,您可以从熊猫直接传递URL。 正如错误所暗示的,需要一个类似文件的对象作为第一个参数。 如果要从字符串读取csv,可以使用(Python 3.x)或(Python 2
我试图在pandas中使用从FTP服务器读取压缩文件。zip文件只包含一个文件,这是必需的。 这是我的密码: 我得到这个错误: 我在pandas 18.1和19.0中都遇到了这个错误。我是否遗漏了什么,或者这可能是一个错误?
问题内容: 打电话时 我得到: /Users/josh/anaconda/envs/py27/lib/python2.7/site- packages/pandas/io/parsers.py:1130:DtypeWarning:列(4,5,7,16)具有混合类型。在导入时指定dtype选项,或将low_memory = False设置为false。 为什么选项与关联,为什么使它有助于解决此问题?
问题内容: 要按单列过滤数据帧(df),如果我们考虑男性和女性的数据,则可以: 问题1-但是,如果数据跨越多年并且我只想看2014年的男性,该怎么办? 用其他语言,我可能会做类似的事情: (除了我要执行此操作,并在新的数据框对象中获取原始数据框的子集) 问题2。如何循环执行此操作,并为每个唯一的年份和性别集创建一个数据框对象(例如,2013-男,2013-女,2014-男和2014-女的df 问题
问题内容: 我在尝试将其读入pandas数据框的文本文件中具有以下格式的文件。 如您所见,输入文件中的浮点后面有 10个 整数。 当我尝试将其读入数据帧时,我没有得到最后的4个整数 如何获得输入文件中显示的完整精度?我有一些矩阵操作需要执行,所以我不能将其转换为字符串。 我发现我必须做一些事情,但是我不确定应该在哪里使用它。 问题答案: 这只是显示问题,请参阅docs: Pandas使用专用的十进