python写下拉列表在excel_用python处理excel数据(四)实现excel表下拉自动填充
我有这样一张excel表,id 实现自动填充,库存 实现隔行yes 否则no,日期自动填充
1、先读取excel
import pandas as pd
edexcel=pd.read_excel('F:/Practice/py/store.xlsx')
print(edexcel)
发现有空行,可以使用skiprows 来取消空行,空列可以是用usecol
NaN(非数字),在pandas中,它代表缺失或NA值
import pandas as pd
edexcel=pd.read_excel('F:/Practice/py/store.xlsx',skiprows=3,usecols='B:F')
print(edexcel)
2、给ID填充数据
通过print(type(edexcel['ID']))查看id的数据格式为Series.
Series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据即可产生最简单的Series.
Series的字符串表现形式为:索引在左边,值在右边
查看series的文档 可知有at()函数,可以在指定的行/列对设置值,如下所示:
import pandas as pd
edexcel=pd.read_excel('F:/Practice/py/store.xlsx',skiprows=3,usecols='B:F',index_col=None)
print(type(edexcel['ID']))
edexcel['ID'].at[0]='10'
print(edexcel['ID'])
可以用for循环 将所有ID列都填充。
import pandas as pd
edexcel=pd.read_excel('F:/Practice/py/store.xlsx',skiprows=3,usecols='B:F',index_col=None)
for i in edexcel.index:
edexcel['ID'].at[i]=i+1
print(edexcel)
但是id 是float,应该为int型。
当pandas读取excel时 发现列为空时 回自动设为float。可以用dtype={}来转换类型。当dtype={'ID':int})时 会报错,因为值为NaN时 pandas不让转换为int,可以转换成str
import pandas as pd
edexcel=pd.read_excel('F:/Practice/py/store.xlsx',skiprows=3,usecols='B:F',index_col=None,
dtype={'ID':str})
for i in edexcel.index:
edexcel['ID'].at[i]=i+1
print(edexcel)
3、填充库存列
import pandas as pd
edexcel=pd.read_excel('F:/Practice/py/store.xlsx',skiprows=3,usecols='B:F',index_col=None,
dtype={'ID':str,'库存':str,'日期':str})
for i in edexcel.index:
edexcel['ID'].at[i]=i+1
edexcel['库存'].at[i]='Yes' if i%2==0 else 'No'
print(edexcel)
4、填充日期
先导入datetime模块 会用到date 和timedelta
import pandas as pd
from datetime import date,timedelta
edexcel=pd.read_excel('F:/Practice/py/store.xlsx',skiprows=3,usecols='B:F',index_col=None,
dtype={'ID':str,'库存':str,'日期':str})
bdate=date(2020,1,21)
for i in edexcel.index:
edexcel['ID'].at[i]=i+1
edexcel['库存'].at[i]='Yes' if i%2==0 else 'No'
edexcel['日期'].at[i]=bdate
print(edexcel)
自动填充年
import pandas as pd
from datetime import date,timedelta
edexcel=pd.read_excel('F:/Practice/py/store.xlsx',skiprows=3,usecols='B:F',index_col=None,
dtype={'ID':str,'库存':str,'日期':str})
bdate=date(2020,1,21)
for i in edexcel.index:
edexcel['ID'].at[i]=i+1
edexcel['库存'].at[i]='Yes' if i%2==0 else 'No'
edexcel['日期'].at[i]=date(bdate.year+i,bdate.month,bdate.day)
print(edexcel)
月份自动填充,涉及到一个日期函数
待续。
20200122
月份自动填充,涉及到一个日期函数。
import pandas as pd
from datetime import date,timedelta
def add_month(d,md): #d 日期 md 加多少个月
yd = md//12 #变量yd md里包含 多少年,md整除12 算出多少年
m = d.month + md%12 #月份 当前月份加上md对12取余
if m != 12: #当以上所得月份m,大于或小月12即不等于12时,再计算一边年份 和月份
yd += m//12 #以上所得年 再加上 月份m除以12
m=m%12 #月份为 以上月份除以12取余
return date(d.year+yd,m,d.day)#返回新的date
edexcel=pd.read_excel('F:/Practice/py/store.xlsx',skiprows=3,usecols='B:F',index_col=None,
dtype={'ID':str,'库存':str,'日期':str})
bdate=date(2020,1,21)
#print(type(edexcel['ID']))
#edexcel['ID'].at[0]='10'
#print(edexcel['ID'])
for i in edexcel.index:
edexcel['ID'].at[i]=i+1 #DataFrame.at 访问行/列标签对的单个值
edexcel['库存'].at[i]='Yes' if i%2==0 else 'No'
edexcel['日期'].at[i] = add_month(bdate,i)
print(edexcel)
保存 且不生成index
edexcel.set_index('ID',inplace=True)
edexcel.to_excel('F:/Practice/py/practise_04.xlsx')
以上为先获取到series 在进行at()操作
以下直接在dataframe上操作 即:
import pandas as pd
from datetime import date,timedelta
def add_month(d,md): #d 日期 md 加多少个月
yd = md//12 #变量yd md里包含 多少年,md整除12 算出多少年
m = d.month + md%12 #月份 当前月份加上md对12取余
if m != 12: #当以上所得月份m,大于或小月12即不等于12时,再计算一边年份 和月份
yd += m//12 #以上所得年 再加上 月份m除以12
m=m%12 #月份为 以上月份除以12取余
return date(d.year+yd,m,d.day)#返回新的date
edexcel=pd.read_excel('F:/Practice/py/store.xlsx',skiprows=3,usecols='B:F',index_col=None,
dtype={'ID':str,'库存':str,'日期':str})
bdate=date(2020,1,21)
#print(type(edexcel['ID']))
#edexcel['ID'].at[0]='10'
#print(edexcel['ID'])
for i in edexcel.index:
edexcel.at[i,'ID']=i+1 #DataFrame.at 访问行/列标签对的单个值
edexcel.at[i,'库存']='Yes' if i%2==0 else 'No'
edexcel.at[i,'日期'] = add_month(bdate,i)
edexcel.set_index('ID',inplace=True)
edexcel.to_excel('F:/Practice/py/practise_05.xlsx')
print('Done!')CSDN-专业IT技术社区-登录blog.csdn.net
python写下拉列表在excel_用python处理excel数据(四)实现excel表下拉自动填充相关推荐
- 吃鸡是python写的吗_吃鸡游戏也是用Python写的?学了Python,120个月年终奖向你招手~...
原标题:吃鸡游戏也是用Python写的?学了Python,120个月年终奖向你招手~ 吃鸡游戏火爆全球,已经把腾讯的<王者荣耀>都比下去了,有传言,腾讯给"王者荣耀"开 ...
- python写一个表白程序-用Python写一个表白神器让你脱单
原标题:用Python写一个表白神器让你脱单 来自公众号:Python编程时光 今天是什么节日,就不用小明说了吧? 有女朋友的,该准备的礼物买了吗? 没有对象的,表白的套路学会了吗? 还没有?好吧,你 ...
- php和python写爬虫-一个简单的Python写的XML爬虫
一个简单的Python写的XML爬虫 来源:程序员人生 发布时间:2013-11-06 16:22:29 阅读次数:1578次 原理很简单,读XML结构,返回值,判断,根据返回的值得到下一个XML的地 ...
- python写魔兽世界脚本_用python bat写软件安装脚本 + HM NIS Edit自动生成软件安装脚本...
2019-03-11更新:原来NSIS脚本也可以禁用64位文件操作重定向的! 1.在安装脚本的开始处定义 LIBRARY_X64. !include "MUI.nsh" !incl ...
- python写mysql脚本_使用python写一个监控mysql的脚本,在zabbix web上加上模板
使用python写一个监控mysql的脚本,在zabbix web上加上模板: ##先使用MySQLdb的接口关联数据库. [root@cml python]# cat check_Mysql_cus ...
- python写机器人程序_用Python写的一个多线程机器人聊天程序
本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...
- 如何用python写html的插件,使用python开发vim插件及心得分享
如何使vim下开发python调试更方便 如何用 Python 给 Vim 写插件 如何使 Vim 下开发 Python 调试更方便 怎么用python调用matlab? 打算用vim写Python ...
- 用python写聊天机器人_用Python 写一个机器人陪你聊天(文尾有彩蛋)
工作一忙,原来秉烛夜谈的好友现在都很少聊天,微信都成了微信群的天下,鲜有微信好友给你发消息,想要主动发却也找不到开题话题,怎么办?用Python写一个机器人陪自己聊聊天吧.以下是源码及解析,小白都看得 ...
- python写一个类方法_重写python脚本,在脚本的每个类中注入一个方法 - python
假设我有一个python模块foo.py,其中包含: class Foo(object): def __init__(self): pass 接下来,我想解析此脚本,并在每个类中注入一个方法,然后将其 ...
最新文章
- 在MacBook Pro 2015上安装iTerm2笔记
- CALayer(二)
- mysql innodb commit_MySQL:Innodb 关于Handler_commit每次DML增加2的原因
- Spark- Checkpoint原理剖析
- 反向输出一个三位数(信息学奥赛一本通-T1031)
- scrapy爬虫学习系列七:scrapy常见问题解决方案
- 蚂蚁课堂视频笔记思维导图-4期 三、消息中间件
- stc流水灯c语言程序,求51单片机流水灯跑马灯程序设计 (STC89C52RC)??
- github电脑壁纸_超有用电脑小工具(二)附福利
- 基于MTCNN+arcface的人脸检测和人脸识别
- 网站搜索引擎优化(SEO)服务合同书
- 20.4.26工作感想
- Java响应式编程基础-响应式流
- pythoneducoder苹果梨子煮水的功效_荸荠和梨子一起煮的好处
- 输出数字矩阵并把最后变为PUM
- 计算机适合用mac吗,原神能用苹果电脑玩吗
- 手机、浏览器的分辨率、状态栏参数
- JS正则表达式实现简单的表单验证(账号,密码,手机号)
- 多媒体——音频——利用MediaRecorder录制音频
- 470计算机毕业设计
热门文章
- w ndows7放大字体,Windows7字体变大的两个解决方法
- python指定宽度20输出_Python 以指定宽度格式化输出
- google-glog 学习
- 宝塔新建站点访问报错
- 星巴克中国“共享空间”全新门店上海开业;百胜中国新增餐厅经理百万医疗险 | 食品饮料新品...
- 相亲婚恋小程序,打造线上相亲新模式
- oauth2之理论-实战-模式-踩坑
- 数据库set autocommit=on;与set autocommit=off;关系
- iphone12mini没有5g吗?iphone12mini支持5g吗
- 各国开发者 2022 薪资水平:Go 收入最高!