Python pandas Dataframe来自csv的第一行和最后一行
发布时间:2020-12-20 12:07:31 所属栏目:Python 来源:网络整理
导读:全部 – 我期待从一个非常大的csv的第一行和最后一行创建一个pandas DataFrame.本练习的目的是能够轻松地从这些csv文件中的第一个和最后一个条目中获取一些属性.我使用以下方法抓住csv的第一行没有问题: pd.read_csv(filename,nrows=1) 我也可以通过各种方
全部 –
我期待从一个非常大的csv的第一行和最后一行创建一个pandas DataFrame.本练习的目的是能够轻松地从这些csv文件中的第一个和最后一个条目中获取一些属性.我使用以下方法抓住csv的第一行没有问题: pd.read_csv(filename,nrows=1) 我也可以通过各种方式抓取文本文件的最后一行,例如: with open(filename) as f: last_line = f.readlines()[-1] 但是,将这两个东西放到一个DataFrame中会让我感到厌恶.有关如何最好地实现这一目标的任何见解? 编辑注意:我正在尝试完成此任务,而不是首先将所有数据加载到单个DataFrame中,因为我正在处理相当大(> 15MM行)的csv文件. 谢谢! 解决方法
只需使用头部和尾部和concat.您甚至可以调整行数.
import pandas as pd df = pd.read_csv("flu.csv") top = df.head(1) bottom = df.tail(1) concatenated = pd.concat([top,bottom]) print concatenated 结果: Date Cases 0 9/1/2014 45 121 12/31/2014 97 调整头部和尾部从顶部开始5行,从底部调整10行… Date Cases 0 9/1/2014 45 1 9/2/2014 104 2 9/3/2014 47 3 9/4/2014 108 4 9/5/2014 49 112 12/22/2014 30 113 12/23/2014 81 114 12/24/2014 99 115 12/25/2014 85 116 12/26/2014 55 117 12/27/2014 91 118 12/28/2014 68 119 12/29/2014 109 120 12/30/2014 55 121 12/31/2014 97 如果您不想将整个CSV文件作为数据框加载,可以使用的一种可能方法是将它们单独处理为CSV.以下代码与您的方法类似. import pandas as pd import csv top = pd.read_csv("flu.csv",nrows=1) headers = top.columns.values with open("flu.csv","r") as f,open("flu2.csv","w") as g: last_line = f.readlines()[-1].strip().split(",") c = csv.writer(g) c.writerow(headers) c.writerow(last_line) bottom = pd.read_csv("flu2.csv") concatenated = pd.concat([top,bottom]) concatenated.reset_index(inplace=True,drop=True) print concatenated 除索引外,结果相同.测试了一百万行,并在大约一秒钟内处理. Date Cases 0 9/1/2014 45 1 7/25/4885 99 [Finished in 0.9s] 它如何扩展到1500万行,也许这就是你现在的球赛. Date Cases 0 9/1/2014 45 1 7/25/4885 99 [Finished in 3.3s] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |