在python中使用csv数据高效地生成对象

2024-04-26 17:32:48 发布

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

我有一个包含节点信息的.csv文件(包括节点id,x,y),我尝试为.csv文件中的每个记录生成对象。现在我使用的是apply方法,但它的运行时间和for循环差不多(1分钟)。由于.csv文件包含大量的记录,我如何才能有效地(减少运行时间)执行此操作。你知道吗

import pandas as pd
import datetime

class Node:
    def __init__(self):
        self.node_id = 0
        self.x = 0.0
        self.y = 0.0

    def load_data(x):
        node = Node()
        node.node_id = x['node_id']
        node.x = x['x']
        node.y = x['y']
        return node

if "__main__" == __name__:
    time1 = datetime.datetime.now()
    node_info = pd.read_csv('input_node.csv', header = 0)
    node_series = node_info.apply(Node.load_data,axis=1)
    node_list = list(node_series.values)
    time2 = datetime.datetime.now()
    time_delta = time2 - time1

.csv file sample


Tags: 文件csvimportselfidnodedatetime节点
1条回答
网友
1楼 · 发布于 2024-04-26 17:32:48

我做了一些测试,您最好在读取csv行时构建节点:

import csv

class Node:
    def __init__(self, node_id, x, y):
        self.node_id = node_id
        self.x = x
        self.y = y

with open('input_node.csv') as fin:
    reader = csv.reader(fin)
    header = next(reader)  # read header
    node_list = [Node(*row) for row in reader]

这应该比您当前的实现快得多

相关问题 更多 >