我有这样一张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表下拉自动填充相关推荐

  1. 吃鸡是python写的吗_吃鸡游戏也是用Python写的?学了Python,120个月年终奖向你招手~...

    原标题:吃鸡游戏也是用Python写的?学了Python,120个月年终奖向你招手~ 吃鸡游戏火爆全球,已经把腾讯的<王者荣耀>都比下去了,有传言,腾讯给"王者荣耀"开 ...

  2. python写一个表白程序-用Python写一个表白神器让你脱单

    原标题:用Python写一个表白神器让你脱单 来自公众号:Python编程时光 今天是什么节日,就不用小明说了吧? 有女朋友的,该准备的礼物买了吗? 没有对象的,表白的套路学会了吗? 还没有?好吧,你 ...

  3. php和python写爬虫-一个简单的Python写的XML爬虫

    一个简单的Python写的XML爬虫 来源:程序员人生 发布时间:2013-11-06 16:22:29 阅读次数:1578次 原理很简单,读XML结构,返回值,判断,根据返回的值得到下一个XML的地 ...

  4. python写魔兽世界脚本_用python bat写软件安装脚本 + HM NIS Edit自动生成软件安装脚本...

    2019-03-11更新:原来NSIS脚本也可以禁用64位文件操作重定向的! 1.在安装脚本的开始处定义 LIBRARY_X64. !include "MUI.nsh" !incl ...

  5. python写mysql脚本_使用python写一个监控mysql的脚本,在zabbix web上加上模板

    使用python写一个监控mysql的脚本,在zabbix web上加上模板: ##先使用MySQLdb的接口关联数据库. [root@cml python]# cat check_Mysql_cus ...

  6. python写机器人程序_用Python写的一个多线程机器人聊天程序

    本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...

  7. 如何用python写html的插件,使用python开发vim插件及心得分享

    如何使vim下开发python调试更方便 如何用 Python 给 Vim 写插件 如何使 Vim 下开发 Python 调试更方便 怎么用python调用matlab? 打算用vim写Python ...

  8. 用python写聊天机器人_用Python 写一个机器人陪你聊天(文尾有彩蛋)

    工作一忙,原来秉烛夜谈的好友现在都很少聊天,微信都成了微信群的天下,鲜有微信好友给你发消息,想要主动发却也找不到开题话题,怎么办?用Python写一个机器人陪自己聊聊天吧.以下是源码及解析,小白都看得 ...

  9. python写一个类方法_重写python脚本,在脚本的每个类中注入一个方法 - python

    假设我有一个python模块foo.py,其中包含: class Foo(object): def __init__(self): pass 接下来,我想解析此脚本,并在每个类中注入一个方法,然后将其 ...

最新文章

  1. 在MacBook Pro 2015上安装iTerm2笔记
  2. CALayer(二)
  3. mysql innodb commit_MySQL:Innodb 关于Handler_commit每次DML增加2的原因
  4. Spark- Checkpoint原理剖析
  5. 反向输出一个三位数(信息学奥赛一本通-T1031)
  6. scrapy爬虫学习系列七:scrapy常见问题解决方案
  7. 蚂蚁课堂视频笔记思维导图-4期 三、消息中间件
  8. stc流水灯c语言程序,求51单片机流水灯跑马灯程序设计 (STC89C52RC)??
  9. github电脑壁纸_超有用电脑小工具(二)附福利
  10. 基于MTCNN+arcface的人脸检测和人脸识别
  11. 网站搜索引擎优化(SEO)服务合同书
  12. 20.4.26工作感想
  13. Java响应式编程基础-响应式流
  14. pythoneducoder苹果梨子煮水的功效_荸荠和梨子一起煮的好处
  15. 输出数字矩阵并把最后变为PUM
  16. 计算机适合用mac吗,原神能用苹果电脑玩吗
  17. 手机、浏览器的分辨率、状态栏参数
  18. JS正则表达式实现简单的表单验证(账号,密码,手机号)
  19. 多媒体——音频——利用MediaRecorder录制音频
  20. 470计算机毕业设计

热门文章

  1. w ndows7放大字体,Windows7字体变大的两个解决方法
  2. python指定宽度20输出_Python 以指定宽度格式化输出
  3. google-glog 学习
  4. 宝塔新建站点访问报错
  5. 星巴克中国“共享空间”全新门店上海开业;百胜中国新增餐厅经理百万医疗险 | 食品饮料新品...
  6. 相亲婚恋小程序,打造线上相亲新模式
  7. oauth2之理论-实战-模式-踩坑
  8. 数据库set autocommit=on;与set autocommit=off;关系
  9. iphone12mini没有5g吗?iphone12mini支持5g吗
  10. 各国开发者 2022 薪资水平:Go 收入最高!