东莞微信网站建设咨询,重庆网站建设 九度互联,海外网络连接器,设计说明书怎么写案例背景
真的很容易疯....上班的单位的表格都是不同的人做的#xff0c;所以就会出现各种合并单元格的情况#xff0c;要知道我们用pandas读取数据最怕合并单元格了#xff0c;因为没规律...可能前几列没合并#xff0c;后面几列又合并了....而且pandas对于索引很严格所以就会出现各种合并单元格的情况要知道我们用pandas读取数据最怕合并单元格了因为没规律...可能前几列没合并后面几列又合并了....而且pandas对于索引很严格这种合并单元读取进来就是空的还怎么查找数据......例如 还有这种 读取的时候....真的很无语。虽然手工做的表头方便人看但真的不方便代码来取数。
下面我们来看看怎么自动化读取这种多合并表格的数据并规范表头。就用这个资产的样例 代码实现
读取数据前2行都是标题没用跳过然后header0,1表示2行作为多层索引。
name资产类别统计表2023.7.xlsxdfpd.read_excel(f{name},skiprows2,header[0,1],converters{类别编号: str})
df.head(3) 可以看到有‘unnamed’这种合并单元出现的空值的情况。
我们可以打印查看一下行索引名称
df.columns 像这种只有部分下面缺失的可以直接用上面的第一层索引填充第二层索引让它还是两层索引然后继续做多层索引数据框。
cols df.columns.map(lambda x: [x[0]if Unnamed in i else i for i in x])
multi_cols pd.MultiIndex.from_arrays([list(col) for col in zip(*cols)])
df.columnsmulti_cols
df.head(2) 这样就是处理好 然后按照多层索引的方法去进行取数。
若多层索引不熟悉只想变成正常 的二维数据框那么就这样
cols df.columns.map(lambda x: .join( if Unnamed in i else i for i in x))
cols 把第一层和第二层的名称都进行合并然后赋值
df.columnscols
df.head(2) 这样就变成了单层数据框完成
后面就正常的pandas索引进行取数修改筛选计算等工作了。