python - 在python中有效地使用来自csv的数据生成对象
问题描述
我有一个包含节点信息(包括 node_id、x、y)的 .csv 文件,我尝试为 .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 行的同时构建节点会更好:
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]
这应该比您当前的实现快得多
推荐阅读
- java - 无法使用 selenium 中的任何定位器定位任何元素
- javascript - 纯 CSS 目录
- java - 对启用 CORS 的 Spring Boot 端点的 OPTIONS 请求中出现奇怪的“允许”标头
- git - 你如何拉取别人在你的分支上所做的提交?
- r - 如何提取两个空格之间的子字符串
- c++ - 没有调用回调函数?
- javascript - 分析 API(应用程序脚本)文档丢失?| “getItems”与“items”等问题
- javascript - 无法从 VUE 向 ESP32 https 服务器发出 POST 请求
- python - PRAW/PYTHON,如何修复 .comments 函数中的 400 HTTP 响应?
- javascript - 无法更改输入字段中的值