如何从含多行列表的竖线分隔文件创建Pandas DataFrame
解决方案
方法一:改进现有csv.reader代码
你之前的问题是每次循环仅将当前行转为DataFrame,最终只会保留最后一行数据。正确做法是先把所有行收集到列表中,再一次性生成DataFrame,同时处理每行末尾多余的空元素(因每行以|结尾,csv.reader会多解析出一个空列):
import csv import pandas as pd myfile = dbdir + '/Data/customer.CR.load' # 收集所有行数据 all_rows = [] with open(myfile, newline='') as csvfile: csvreader = csv.reader(csvfile, delimiter='|') for row in csvreader: # 取每行前14个元素,去掉末尾空列 all_rows.append(row[:14]) # 用收集到的所有行生成DataFrame df = pd.DataFrame(all_rows)
方法二:直接用Pandas的read_csv(更简洁)
Pandas自带的read_csv可直接处理这类分隔符文件,无需手动使用csv.reader,指定分隔符为|并仅读取前14列即可:
import pandas as pd myfile = dbdir + '/Data/customer.CR.load' # 读取文件,指定分隔符,取前14列,无表头 df = pd.read_csv(myfile, delimiter='|', usecols=range(14), header=None)
补充说明
你读取的每行数据会多出一个空元素(比如示例中的['1361886', ..., 'HOLDER', '']),这是因为每行最后以|结尾,csv解析器会把结尾分隔符后的区域也识别为空列,通过row[:14]或usecols=range(14)就能得到你需要的14列数据。
内容的提问来源于stack exchange,提问作者Sangeen Khan
相关产品推荐
相关产品推荐

