pandas的填充日期的方式
- 填充天数,天数递增
- 第一种方法
start = date(2018,1,1)
for i in books.index:
books['ID'].at[i] = i+1
books['Instore'].at[i] = 'Yes' if i%2==0 else 'No'
books['Date'].at[i] = start+ timedelta(days=i)
这种方式并不能填充月份、年份,很明显timedelta是这个方法的问题。但是可以添加hour,min等等。
- 第二种方法增加月份
start = date(2018,1,1)
for i in books.index:
books['ID'].at[i] = i+1
books['Instore'].at[i] = 'Yes' if i%2==0 else 'No'
books['Date'].at[i] = date[start.year + i,start.month,start.day]
但是月份不能随便这种方式加,因为月份到12月年份要增加1
def add_month(d,md):
yd = md//12
m = d.month + md%12
if m != 12:
yd +=m//12
m = m%12
return date(d.year+yd,m,d.day)
使用方式
books['Date'].at[i] = add_month(start,i)
就可以实现月份自增了
最后保存输出:books.to_excel(‘C:/Users/Desktop/output.xlsx’)
完整代码:
import pandas as pd
from datetime import date,timedelta
def add_month(d,md):
yd = md//12
m = d.month + md%12
if m != 12:
yd +=m//12
m = m%12
return date(d.year+yd,m,d.day)
books = pd.read_excel('C:/Users/Desktop/books.xlsx',
skiprows=3,usecols="D:G",dtype={'ID':str,'books_name':str,'Instore':str,'Date':str})
start = date(2018,1,1)
for i in books.index:
books['ID'].at[i] = i+1
books['Instore'].at[i] = 'Yes' if i%2==0 else 'No'
books['Date'].at[i] = add_month(start,i)
print(books)
books.set_index('ID',inplace=True)
books.to_excel('C:/Users/Desktop/output.xlsx')
但是我们这种方式是先拿到serise然后找at是第几行。还可以直接datefream上改。
for i in books.index:
books.at[i,'ID']= i+1
books.at[i,'books_name'] = 'Yes' if i%2==0 else 'No'
books.at[i,'Date'] = add_month(start,i)
print(books)