pandas处理excel单元格合并后的列

日常处理数据时会面临到一种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解决的
如果大家还有更为简单的方法可以给我留言 欢迎讨论

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vergil_Zsh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值