如何在utils.py的Data_load类中实现CSV多列加载并在main.py调用显示
解决方案:重构Data_load类并读取完整CSV数据
嗨,新年快乐呀!我来帮你把代码理顺,让你既能把数据加载逻辑封装到类里,又能读取CSV的所有列和表头~
第一步:修改utils.py的Data_load类
首先,我们要调整readMyFile方法,让它能读取所有列(原来只取了row[0],这就是你只能拿到单列的原因),同时把它改成类的实例方法(加上self参数),最后在类的初始化方法里完成数据加载,把结果存为实例属性,方便后续调用。
修改后的utils.py代码如下:
import csv import pandas as pd class Data_load(): def __init__(self, filename): # 初始化时直接调用读取方法,把结果存为实例属性self.df self.df = self.readMyFile(filename) def readMyFile(self, filename): file_data = [] with open(filename, 'r') as csvDataFile: csvReader = csv.reader(csvDataFile, delimiter=';') # 遍历每一行,把整行数据加入列表(不再只取row[0]) for row in csvReader: file_data.append(row) # 把读取到的列表转成DataFrame,第一行作为表头 # 这里用file_data[0]当表头,后面的行当数据 df = pd.DataFrame(file_data[1:], columns=file_data[0]) return df
第二步:在main.py中调用类并获取完整数据
现在你可以在main.py里直接实例化Data_load类,传入你的CSV文件路径,然后就能直接拿到带所有列和表头的DataFrame了:
from utils import Data_load # 实例化类,传入你的文件路径 data_loader = Data_load('C:\\...\\count_all_terminate.csv') # 打印完整数据 print(data_loader.df)
关键说明
- 为什么之前只有单列?因为原来的代码里
file.append(row[0])只取了每行的第一列,现在改成file_data.append(row)就能拿到整行的所有列了。 - 怎么设置表头?我们用读取到的第一行(
file_data[0])作为DataFrame的列名,剩下的行(file_data[1:])作为数据内容,这样就自动带上表头了。
内容的提问来源于stack exchange,提问作者Hubsandspokes
相关产品推荐
相关产品推荐

