日常处理数据时会面临到一种excel数据就是单元格合并,但是在pandas读取的时候会被分位两行读取(意:显示位2行 一行为空值 或者更多)
这里主要讲下单元格合并两行的时候,其他的与之类似
这里有我已经创建好的excel表格
pandas读取进去后显示为
这里我做一个要求 希望我们最后的列名为[ID,姓名,性别,年龄,再加上第二行的日期]
# 导入判断时间列的库
import datetime
import pandas as pd
data = pd.read_excel(r'./data/test3.xlsx')
print('输出原始数据: ', data,'\n')
# 取第一行type为datetime的name
time_col = [col for col in data.iloc[0,:].tolist() if type(col) == datetime.datetime]
print('time_col: ', time_col, '\n')
need_cols = data.columns.tolist()[0:4]
print('需要的列名: ', need_cols,'\n')
# 使用列表拼接,得到最终的列
data_all = need_cols + time_col
# 直接进行列名修改
data.columns = data_all
print('修改列名之后: ', data, '\n')
# 这里需要删除第一行
data = data.drop(0)
print('处理完后的数据: ', data, '\n')
运行结果如下图
这里需要声明的一点,可能有些人觉得没有必要这么麻烦 可以直接使用内置函数reindex(columns=col_list)这种方法
这个函数的前提是较为麻烦的 需要将数据也要按照列取下来 如果碰见很复杂的数据 需要根据列名的索引进行获取的可以 不然会出现下列情况
reindex函数相当于对列重新组合,所以要求你的新列前提是要有数据的 后面我将更新我在工作中所碰到的问题,当时我是用reindex解决的
如果大家还有更为简单的方法可以给我留言 欢迎讨论