Python办公—pandas读取Excel表格增加列、两列保持一致、删除列、修改列名、移动列、依条件修改单元格内容(附代码)

专栏导读

  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手

  • 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页

  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏 求订阅

  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

  • ❤️ 欢迎各位佬关注! ❤️

背景

  • 大家都知道Python中处理Excel文件的办公库有很多,如:openpyxl、pandas、xlwings、xlrd这些我之前都有介绍过,还专门写(水)了一篇文章测试他们的读取时间,大家没看过的可以前去考古一下,点我直达

  • 选择pandas是因为读取的效率比openpyxl高一点,有时候我们想在pandas读取Excel时在某列插入几列,或者是修改单元格内的数据时,会经常忘记怎么用,我来记录一下,大家可以收藏一下

插入一列

  • 如果还没有安装的同学,可以先安装一下

  • pip install pandas

  • 首先我们创建一个Excel文件作为测试数据,表头随便写一下

在这里插入图片描述

  • 假设我需要在B列后面插入一列,表头名为【爱好】代码如下

  • 因为B列为第2列,所以参数:loc=2,
    表头名参数:column='爱好'
    填充值参数:value=None(空值)

import pandas as pd


def test():
    # 读取Excel文件
    df = pd.read_excel('测试数据.xlsx')
	# 插入列
    df.insert(loc=2, column='爱好', value=None)
    # 保存修改后的DataFrame到新的Excel文件
    df.to_excel('结果.xlsx', index=False)

test()

在这里插入图片描述

插入多列

  • 假设我需要在D列(班级)后面插入5列,表头名为【列1,列2,列3,列4,列5】代码如下

  • 参数如上,相同的

import pandas as pd


def test():

    # 读取Excel文件
    df = pd.read_excel('测试数据.xlsx')

    # 插入列
    for col_num in range(4, 9):
        df.insert(loc=col_num, column=f'列{col_num-3}', value=None)
    # 保存修改后的DataFrame到新的Excel文件
    df.to_excel('结果.xlsx', index=False)

test()

在这里插入图片描述

删除一列

  • 如下:删除一列表头叫【寄件地区】

df = pd.read_excel("test.xlsx", dtype=str, keep_default_na='')
df.drop(columns=['寄件地区'], inplace=True)

列表头改名

  • 如下:将某列表头【到件地区】修改为【对方地区】

df = pd.read_excel("test.xlsx", dtype=str, keep_default_na='')
df = df.rename(columns={'到件地区': '对方地区'})

移动列

  • 如下:将列【订单号】移动至最后一行

cols = df.columns.drop('订单号')  
# 创建一个新的列顺序列表,将'订单号'放在最后  
new_cols = cols.tolist() + ['订单号']  
# 使用新的列顺序重新索引DataFrame  
df = df.reindex(columns=new_cols)  

依条件修改单元格内容(2个条件以内)

  • 如果A列【学号】<10,则E列【列1】填写:是;否则填写:否,代码如下

import pandas as pd


def test():

    # 读取Excel文件
    df = pd.read_excel('测试数据.xlsx')

    # 插入列
    for col_num in range(4, 9):
        df.insert(loc=col_num, column=f'列{col_num-3}', value=None)
    # 如果A列【学号】<10,则E列【列1】填写:是;否则填写:否,
    df['列1'] = df['学号'].apply(lambda x: '是' if x < 10 else '否')
    
    # 保存修改后的DataFrame到新的Excel文件
    df.to_excel('结果.xlsx', index=False)

test()

在这里插入图片描述

依条件修改单元格内容(3个条件以上)

  • 如果A列【学号】<5,则E列【列1】填写:是;
    如果A列【学号】<10,则E列【列1】填写:否;
    否则填写:X,
    代码如下

  • df['修改的列'] = df['条件列'].apply(调用函数名)

import pandas as pd


def test():

    # 读取Excel文件
    df = pd.read_excel('测试数据.xlsx')

    def modify_value(x):
        if x < 5:
            return '是'
        elif x < 10:
            return '否'
        else:
            return 'x'

            # 插入列
    for col_num in range(4, 9):
        df.insert(loc=col_num, column=f'列{col_num-3}', value=None)

    # df['列1'] = df['学号'].apply(lambda x: '是' if x < 10 else '否')
    df['列1'] = df['学号'].apply(modify_value)


    # 保存修改后的DataFrame到新的Excel文件
    df.to_excel('结果.xlsx', index=False)

test()

在这里插入图片描述

两列保持一致

  • H列【列4】与E列【列1】保持一致,代码如下

import pandas as pd


def test():

    # 读取Excel文件
    df = pd.read_excel('测试数据.xlsx')

    def modify_value(x):
        if x < 5:
            return '是'
        elif x < 10:
            return '否'
        else:
            return 'x'

            # 插入列
    for col_num in range(4, 9):
        df.insert(loc=col_num, column=f'列{col_num-3}', value=None)

    # df['列1'] = df['学号'].apply(lambda x: '是' if x < 10 else '否')
    df['列1'] = df['学号'].apply(modify_value)

    df['列4'] = df['列1']



    # 保存修改后的DataFrame到新的Excel文件
    df.to_excel('结果.xlsx', index=False)

test()

在这里插入图片描述

结尾

希望对大家有帮助

致力于办公自动化的小小程序员一枚

都看到这了,关注+点赞+收藏=不迷路!!

如果你想知道更多关于Python办公自动化的知识各位佬给个关注吧!

  • 19
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一晌小贪欢

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

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

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

打赏作者

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

抵扣说明:

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

余额充值