gpt4 book ai didi

来自 csv 的第一行和最后一行的 Python pandas DataFrame

转载 作者:太空宇宙 更新时间:2023-11-03 12:24:08 26 4
gpt4 key购买 nike

全部 -

我希望仅从非常大的 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 文件。

谢谢!

最佳答案

只需使用headtailconcat。您甚至可以调整行数。

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

调整 headtail 以从顶部接收 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 万行,它如何扩展,也许这就是您现在的球赛。 所以我决定针对恰好 15,728,626 行对其进行测试,结果似乎足够好。

        Date  Cases
0 9/1/2014 45
1 7/25/4885 99
[Finished in 3.3s]

关于来自 csv 的第一行和最后一行的 Python pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806581/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com