Pandas初学者求助:如何从CSV读取矩阵集合至多个DataFrame
解决Pandas读取矩阵集合CSV为多个DataFrame的问题
作为刚接触Pandas的新手,碰到这种非标准CSV格式的问题确实很头疼——毕竟pd.read_csv()是为规范的行列式CSV设计的,矩阵集合这种带{}包裹、分块的格式自然会出问题。咱们一步步来搞定它:
1. 先明确你的CSV格式
首先得确认你的CSV文件结构,大概率是类似这种(每个矩阵用{}包裹,内部是每行一组数据,矩阵间可能有空行):
{
1,2,3
4,5,6
}
{
7,8,9
10,11,12
}
如果是这种结构,咱们可以绕开read_csv,先手动读取文件内容再分割处理。
2. 手动读取+分割矩阵转DataFrame
用Python内置的文件读取先把内容读出来,再拆分出每个矩阵,最后转换成DataFrame:
import pandas as pd # 读取目标CSV文件 with open('你的文件路径.csv', 'r', encoding='utf-8') as f: file_content = f.read() # 分割出每个矩阵的内容,过滤掉空内容和多余符号 raw_matrices = [mat.strip() for mat in file_content.split('{') if mat.strip() and '}' in mat] clean_matrices = [mat.replace('}', '').strip() for mat in raw_matrices] # 把每个矩阵转换成DataFrame,存入列表 df_collection = [] for mat in clean_matrices: # 按换行拆分每行,再按逗号拆分每个元素 matrix_rows = [row.strip().split(',') for row in mat.split('\n') if row.strip()] # 转成DataFrame,你可以手动指定列名,比如columns=['列1', '列2', '列3'] single_df = pd.DataFrame(matrix_rows) df_collection.append(single_df)
3. 适配不同格式变种
如果你的矩阵分隔符不是{},而是其他标识(比如矩阵间用===分隔),只需要调整分割规则就行——把split('{')换成split('==='),再做对应过滤处理。
4. 解释下之前read_csv报错的原因
你用read_csv报错,本质是因为这个文件不符合标准CSV的行列规范:{}属于非数据行,Pandas无法识别正确的列数,自然抛出错误;设置nrows=2时,只读取了前两行,其中的{被当成了数据内容,这显然不是你想要的结果。
验证结果
运行完代码后,df_collection列表里就存着每个矩阵对应的DataFrame了,你可以通过df_collection[0]、df_collection[1]来访问不同的矩阵数据。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

