gpt4 book ai didi

python - 只读取包含大量列的大型文本数据文件的最后一列

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

我是 Python 的新手。我正在编写一个用于数据分析的 jupyter notebook,它应该可以处理已经提供的数据文件。这些数据文件 (.txt) 每个都包含一个大的 float 表,带有分隔符“”。它们很丑陋,因为它们的行数相对较少(~2k)而列数很多(~100k)。“单文件”详分割析工作正常(我有足够的 RAM 将这些文件之一完全加载到内存中,例如通过 np.loadtxt(),并对其进行处理);但我随后想尝试进行多文件交叉分析,其中我只对每个文件的最后一列感兴趣。我找不到一种快速/高效/好的方法来做到这一点。

我能做的是一次一个地 np.loadtxt() 这些文件,然后每次复制结果数组的最后一列并删除其余的;并重复。这是痛苦的缓慢,但它的工作。我想知道我是否可以做得更好!

我也试过这个,灵感来 self 在网上搜索的东西:

data=[]
for i in range(N_istar):
for j in range(N_col_pos):
with open(filename(i,j), 'r') as f:
lastcol=[]
line=f.readline()
while line:
sp=line.split()
lastcol.append(sp[-1])
data.append(lastcol)

但这要么永远持续下去,要么花费大量时间。

有什么建议吗?

最佳答案

您可以使用 pandas read_csv(usecols=)。您必须知道列的索引或名称。代码简洁明了,请参见下面的示例。

如果您不知道最后一列的索引,您可以读取第一行并计算分隔符的数量。

示例

测试.csv

a  b   c    d
0 1 2 3
2 4 6 8

python 代码

import pandas as pd

seperator = r"\s*" # default this will be ",". Using a regex does make it slower.

# column names
pd.read_csv('test.csv', sep=seperator, usecols=['d'])

# column index
pd.read_csv('test.csv', sep=seperator, header=None, usecols=[3])

# Unknown number of columns
with open('test.csv') as current_file:
last_column_index = len(current_file.readline().split())
pd.read_csv('test.csv', sep=seperator, header=None, usecols=[last_column_index])

关于python - 只读取包含大量列的大型文本数据文件的最后一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57569314/

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