无需存储本地文件 用pd.read_csv读取列表变量生成pandas DataFrame
解决方案
方案1:通过io.StringIO封装为缓冲对象(推荐)
pd.read_csv()支持传入类文件缓冲对象,无需将数据落地到本地磁盘。你只需要将列表的所有元素用换行符拼接为完整字符串,再通过io.StringIO包装后直接传入读取即可,原有读取参数可以完全复用:
import pandas as pd import io test = ["Col1\tCol2\tCol3", "12\tInfo1\t34.1","15\tInfo4\t674.1"] # 拼接列表为完整字符串、转成缓冲对象 buffer = io.StringIO('\n'.join(test)) # 直接读取,参数和读取本地csv文件完全一致 df = pd.read_csv(buffer, sep='\t', index_col=1)
该方案会保留pd.read_csv()自带的类型自动推断、异常处理等能力,不需要额外处理数据类型转换。
方案2:手动拆分列表直接构造
如果不想引入io模块,也可以直接对列表项按分隔符拆分后构造DataFrame:
test = ["Col1\tCol2\tCol3", "12\tInfo1\t34.1","15\tInfo4\t674.1"] # 按制表符拆分每一行 split_rows = [line.split('\t') for line in test] # 第一行作为表头,剩余行作为数据 df = pd.DataFrame(split_rows[1:], columns=split_rows[0]).set_index('Col2') # 可选:手动转换数值列类型 df['Col1'] = df['Col1'].astype(int) df['Col3'] = df['Col3'].astype(float)
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

