如何在Python中读取CSV文件,还原含df1、df2的字典并保留分位数索引
读取CSV文件并还原为指定格式的字典
问题背景
此前将包含df1、df2的字典保存为CSV文件,文件内容如下:
,,df1,df2 quantile_10,h0,0.03636844456195831,0.105098 quantile_10,h5,0.0654495671391487,0.108322 quantile_10,h10,0.10933497846126557,0.113496 quantile_10,h15,0.1400846481323242,0.119098 quantile_10,h20,0.1513956755399704,0.068324 quantile_10,h25,0.11640003025531769,0.017974 quantile_10,h30,0.026758757233619694,9.4e-05 quantile_10,h35,0.0020915842149406673,0.0 quantile_20,h0,0.05211468040943147,0.130436 quantile_20,h5,0.08270514607429505,0.125416 quantile_20,h10,0.12569279968738556,0.125436 quantile_20,h15,0.14520362317562102,0.149596
需要读取该文件,还原为包含dict['df1']、dict['df2']的字典,且保留分位数(quantile_*)作为行索引的一部分。
解决方案
使用pandas库可以高效处理这类带多级索引的CSV文件,步骤如下:
1. 导入依赖库
import pandas as pd
2. 读取CSV文件
指定前两列为多级行索引,第一行为表头:
# 读取CSV,设置前两列为行索引 df = pd.read_csv('data.csv', index_col=[0, 1], header=0)
3. 拆分为目标字典
将DataFrame按列拆分,每个列对应字典的一个键,值为保留索引的Series:
result_dict = {col: df[col] for col in df.columns}
如果需要每个值为DataFrame而非Series,可修改为:
result_dict = {col: df[[col]] for col in df.columns}
验证结果
此时result_dict['df1']的行索引为多级结构(分位数+h标识),与原数据结构完全匹配,例如执行:
print(result_dict['df1'].head())
会得到输出:
quantile_10 h0 0.036368 h5 0.065450 h10 0.109335 h15 0.140085 h20 0.151396 Name: df1, dtype: float64
内容的提问来源于stack exchange,提问作者Sher
相关产品推荐
相关产品推荐

