Python 是否可以使用日期参数pd.read_csv数据?
对我来说,远程工作意味着访问服务器上的大型CSV文件,这需要很长时间才能下载到本地硬盘 我尝试使用一点Python来加速这个过程,只阅读我需要的特定专栏。然而,在理想情况下,如果我只能在某个日期(例如>2019-01-04)后读取这些列的数据,则会显著减少数据量 我的现有代码将在total文件中读取,然后应用日期过滤器。我只是想知道是否有可能首先将日期过滤器应用于文件的读取。我明白这可能是不可能的 代码,例如Python 是否可以使用日期参数pd.read_csv数据?,python,pandas,Python,Pandas,对我来说,远程工作意味着访问服务器上的大型CSV文件,这需要很长时间才能下载到本地硬盘 我尝试使用一点Python来加速这个过程,只阅读我需要的特定专栏。然而,在理想情况下,如果我只能在某个日期(例如>2019-01-04)后读取这些列的数据,则会显著减少数据量 我的现有代码将在total文件中读取,然后应用日期过滤器。我只是想知道是否有可能首先将日期过滤器应用于文件的读取。我明白这可能是不可能的 代码,例如 import pandas as pd fields = ['a','b','c'.
import pandas as pd
fields = ['a','b','c'...]
data1 = pd.read_csv(r'SomeForeignDrive.csv', error_bad_lines=False,usecols=fields)
data1['c']=pd.to_datetime(data1['c'], errors='coerce')
data1.dropna()
data1 = data1[data1['c'] > '2019-01-04']
data1.to_csv(r'SomeLocalDrive.csv')
无法从特定日期开始读取文件,但可以使用以下解决方法。您只能读取带有日期的列,并找到要从中开始的行索引。然后可以读取整个文件并跳过开始索引之前的所有行:
df = pd.read_csv('path', usecols=['date'])
df['date'] = pd.to_datetime(df['date'])
idx = df[df['date'] > '2019-01-04'].index[0]
df = pd.read_csv('path', skiprows=idx)
读取\u csv
文档:
使用此参数(usecols)可以大大加快解析时间和速度
降低内存使用率
我建议首先只阅读列
'c'
(usecols=['c']
),使用parse_dates=['c']
,应用过滤器获取索引,然后使用skiprows=match_index
再次读取文件。如果您正在执行的所有操作都已完成,则只需使用open
打开文件,检查日期条件并将其附加到新的file@SayandipDutta这不是意味着要读取文件两次吗?首先,我们需要迭代hole csv以获得所有行以确定所需行,再次?@Epsi95在某种程度上读取文件两次,是的,但仅读取一列将花费更多时间和内存效率。csv按行存储,因此读取特定列需要读取所有内容,不是吗?谢谢,这很简洁。我试试看。