看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
不经意间在视频网站上看到一个 pandas 案例讲解视频,主要内容是关于用 Python 实现 Excel 手工操作时的数字、文本、时间等差填充功能。感觉博主实现时完全没有发挥 pandas 及 Python 的优势,不甚优雅,因此自己花了 10 分钟快速重新实现,逻辑得到了简化,代码量大大减少。
Excel 中的数据截图如下:
文件可下载地址:Excel文件下载
需求为按规划填充以下列:
首先,要读取 Excel 文件,观察得知数据左边和上边有空行和列,需要先跳过指定行数,指定读取列:
import pandas as pd
df = pd.read_excel('Books.xlsx', skiprows=3, usecols='C:F')
df.head()
'''
ID Name InStore Date
0 NaN Book_001 NaN NaN
1 NaN Book_002 NaN NaN
2 NaN Book_003 NaN NaN
3 NaN Book_004 NaN NaN
4 NaN Book_005 NaN NaN
'''
这样就成功读取到 Excel 文件有数据部分。接下来是做缺失数据的填充,按需求的要求,思路为用 assign 重新指定列的内容,各列:
['Yes', 'No']
重复 20 次,用列表的乘法pd.date_range()
生成代码范围时间序列,周期 20 个,频率取月初即每月 1 日代码如下:
(
df.assign(ID=range(1, 21))
.assign(InStore=['Yes', 'No']*10)
.assign(Date=pd.date_range('2018-01-01', periods=20, freq='MS'))
)
'''
ID Name InStore Date
0 1 Book_001 Yes 2018-01-01
1 2 Book_002 No 2018-02-01
2 3 Book_003 Yes 2018-03-01
3 4 Book_004 No 2018-04-01
4 5 Book_005 Yes 2018-05-01
5 6 Book_006 No 2018-06-01
6 7 Book_007 Yes 2018-07-01
7 8 Book_008 No 2018-08-01
8 9 Book_009 Yes 2018-09-01
9 10 Book_010 No 2018-10-01
10 11 Book_011 Yes 2018-11-01
11 12 Book_012 No 2018-12-01
12 13 Book_013 Yes 2019-01-01
13 14 Book_014 No 2019-02-01
14 15 Book_015 Yes 2019-03-01
15 16 Book_016 No 2019-04-01
16 17 Book_017 Yes 2019-05-01
17 18 Book_018 No 2019-06-01
18 19 Book_019 Yes 2019-07-01
19 20 Book_020 No 2019-08-01
'''
最终就完成了需求,如有需要可以对以上处理完成的数据做导出操作。
(完)
更新时间:2024-08-18 15:38:52 标签:pandas python excel 填充 时间