Python办公—pandas读取Excel表格增加列、两列保持一致、删除列、修改列名、移动列、依条件修改单元格内容(附代码)
时间:2024-04-19 16:40:44 来源:网络cs 作者:焦糖 栏目:卖家故事 阅读:
阅读本书更多章节>>>>
因为B列为第2列,所以参数:loc=2,
如果A列【学号】<5,则E列【列1】填写:是;
目录
专栏导读背景插入一列插入多列删除一列列表头改名移动列依条件修改单元格内容(2个条件以内)依条件修改单元格内容(3个条件以上)两列保持一致结尾
专栏导读
🌸 欢迎来到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 pddef 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 pddef 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 pddef 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 pddef 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 pddef 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办公自动化的知识各位佬给个关注吧!
阅读本书更多章节>>>>本文链接:https://www.kjpai.cn/gushi/2024-04-19/160391.html,文章来源:网络cs,作者:焦糖,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
上一篇:docker中“Cannot connect to the Docker daemon at .............Is the Docker daemon running?” 解决办法
下一篇:返回列表