使用pandas或内置函数open缩短解析大型TSV文件的时间

2024-09-29 20:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常大的tsv文件,文件内容如下所示

数据:

a       b       value1  value2              
a550    b234    0.555   3.61
a710    b234    0.0963  5.18
a473    b234    0.0843  3.94
a782    b234    0.00542 14.0
a544    b234    0.105   3.94
a211    b234    0.0506  4.71
a656    b234    -0.0295 4.04
a303    b234    -0.0047 4.61
a303    b234    -0.017  4.56
a303    b234    0.0522  8.78
a244    b234    0.0806  5.56
.
.
.
.

我曾经使用pandas将文件读取并解析到字典中,但这需要很多时间

import pandas as pd
import time

start_time =time.time()
data = pd.read_csv("bigfile.tsv", sep ="\t")
data['a_b'] = data[['a', 'b']].apply(tuple, axis=1)
data = dict(zip(data['a_b'], data['score']))
end_time = time.time()

execution_time = end_time-start_time
print(data)
print("time:",execution_time)

输出:

{('a550', 'b234'): -0.0828, ('a710', 'b234'): 0.00984, .............}
time: 464.0104968547821

我知道有更好的方法来加载这个文件以减少加载和解析时间,有人能帮我吗


Tags: 文件importpandasdatatimetsv时间start
1条回答
网友
1楼 · 发布于 2024-09-29 20:30:23

数据['a_b']=数据['a',b']]。应用(元组,轴=1)是一个庞大的计算。通过使用纯python避免这种情况。我测试了长度超过1000万行的类似数据。只花了3秒钟就完成了任务

data = pd.read_csv("bigfile.tsv", sep ="\t")
a_b = list(zip(data['a'].to_list(),data['b'].to_list()))
data = dict(zip(a_b, data['value1'].to_list()))

相关问题 更多 >

    热门问题