python - 将多索引数据帧写入 csv 而不更改其格式
问题描述
我通过连接 3 个 4 列数据框创建了一个多索引数据框:
df = pd.concat([df_RCB, df_SECB, df_UBP], axis=1, sort=True)
headers = (['RCB']*4) + (['SECB']*4) + (['UBP']*4)
sub-headers = df.columns.tolist()
data = np.array(df)
data = pd.DataFrame(data=data, columns=pd.MultiIndex.from_tuples(list(zip(headers, sub-headers))), index=df.index)
data.head()
输出:
RCB SECB UBP
open high low close open high low close open high low close
1999-02-04 25.0 25.0 25.0 25.0 14.25 14.50 13.75 13.75 15.5 15.5 15.25 15.5
1999-02-05 25.0 25.0 25.0 25.0 13.75 13.75 13.75 13.75 15.5 15.5 15.50 15.5
1999-02-08 25.0 25.0 25.0 25.0 13.75 13.75 13.75 13.75 15.5 15.5 15.50 15.5
1999-02-09 25.0 25.0 25.0 25.0 13.75 13.75 13.75 13.75 15.5 15.5 15.50 15.5
1999-02-10 25.0 25.0 25.0 25.0 13.75 13.75 13.75 13.75 15.5 15.5 15.50 15.5
我将它写入一个 csv 文件然后读取它,但格式改变了:
data.to_csv('fin.csv', index_label=False)
fin = pd.read_csv('fin.csv')
fin.head()
输出:
Unnamed: 0 RCB RCB.1 RCB.2 RCB.3 SECB SECB.1 SECB.2 SECB.3 UBP UBP.1 UBP.2 UBP.3
0 NaN open high low close open high low close open high low close
1 1999-02-04 25.0 25.0 25.0 25.0 14.25 14.5 13.75 13.75 15.5 15.5 15.25 15.5
2 1999-02-05 25.0 25.0 25.0 25.0 13.75 13.75 13.75 13.75 15.5 15.5 15.5 15.5
3 1999-02-08 25.0 25.0 25.0 25.0 13.75 13.75 13.75 13.75 15.5 15.5 15.5 15.5
4 1999-02-09 25.0 25.0 25.0 25.0 13.75 13.75 13.75 13.75 15.5 15.5 15.5 15.5
如何在写入 csv 之前保留数据帧的格式?
解决方案
如果要保留多个索引,则应写入 excel 而不是 csv
data.to_excel('fin.xlsx')
您也可以通过以下方式创建数据
df = pd.concat([df_RCB, df_SECB, df_UBP],keys=['RCB','SECB','UBP'] axis=1, sort=True)
推荐阅读
- python - 使用字符串 replace() 从数据库查询结果中获取值会导致问题
- android - 如何授予 android 应用程序用户对 AWS S3 对象的访问权限?
- android - 如何在 getView 方法中的 TextWatcher 中设置增量计数器?
- php - PHP - 检查 2 个逗号分隔的整数中的前导 0
- javascript - 为什么 [...].reduce(Math.min,0) 返回 NaN?
- java - 如何在 javers 中注册提供全局 id 字符串函数的身份类?
- javascript - 使用 Webpack 时 Socket.io 不全局可用
- javascript - Javascript 窗口未定义
- php - Symfony 4 表关系不符合命名策略?
- html - 我想删除出现在我的响应式横幅图像中的空白区域