python – 当不重复生成列标题时,如何将csv文件作为MultiIndexed
发布时间:2020-12-20 13:09:42 所属栏目:Python 来源:网络整理
导读:我有许多.csv文件,我想读作MultiIndexed DataFrames,但是不会重复生成列标题,因此我留下了两个标题而不是MultiIndex. 一个test.csv文件: A,B,C,a1,a2,b1,b2,c1,c21,1,12,2,2 当我运行以下, import pandas as pddf = pd.read_csv('test.csv',header=[0,1])pr
我有许多.csv文件,我想读作MultiIndexed DataFrames,但是不会重复生成列标题,因此我留下了两个标题而不是MultiIndex.
一个test.csv文件: A,B,C,a1,a2,b1,b2,c1,c2 1,1,1 2,2,2 当我运行以下, import pandas as pd df = pd.read_csv('test.csv',header=[0,1]) print(df) 返回的结构不是我想要的: A Unnamed: 1_level_0 B Unnamed: 3_level_0 C Unnamed: 5_level_0 a1 a2 b1 b2 c1 c2 0 1 1 1 1 1 1 1 2 2 2 2 2 2 我想要一个MultiIndex,第一个列标题的行为如下: A B C a1 a2 b1 b2 c1 c2 0 1 1 1 1 1 1 1 2 2 2 2 2 2 有没有办法按原样读取csv,以便获得所需的结构?如果没有,最简单的方法是修改csv文件,以便它们明确重复外部标题值,这样做是否最有效? A,A,C a1,2 解决方法
我不知道有任何方法可以在单行中执行此操作,但您可以在python中修复它,而不是手动编辑文件.
首先从MultiIndex的第一级创建一个Series,确保按照标签中给出的顺序对值进行排序: level_0 = pd.Series(df.columns.levels[0][df.columns.labels[0]]) 然后将’Unnamed:*’值转换为None并执行fillna转发: level_0[level_0.str.startswith('Unnamed: ')] = None level_0 = level_0.fillna(method = 'ffill') 最后将系列值和索引指定为DataFrame的级别和标签: df.columns = pd.MultiIndex(levels = [level_0.values,df.columns.levels[1]],labels = [level_0.index,df.columns.labels[1]]) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在python中使用elasticsearch做为搜索引擎
- python获取网络时间和本地时间
- NetBeans 8.0.2无法识别python plataform.如何解决这个问题
- 用python写一个windows下的定时关机脚本(推荐)
- python – 在Matplotlib直方图或Seaborn distplots的箱子上
- 112 Python程序中的进程操作-开启多进程(multiprocess.proc
- html2text:将 HTML 转换为 Markdown 格式文本
- python – 如何使用逗号分隔变量?
- python – pandas中连续数据的平行坐标图
- 无法嵌入python以使用zip’d库