我正在使用python notebook(jupyter)运行一个侧面数据分析项目。数据集有大约1.3行,我要做的第一件事是从日期'日期中提取日,月和年。数据集中的列。我编写的代码执行得很好,但需要很长时间。我估计完成数据处理程序可能需要一个半小时。我想知道是否有人可以就我的代码提出一些改进速度的建议?
import csv
from datetime import datetime
def date_split(calendar):
new_calendar={}
i=0
calendar_total=pd.DataFrame()
num=calendar.shape[0]-1
while i<=10000:
tem=calendar_data.iloc[i,1]
#extract year&month&day from day column
listdate=datetime.strptime(tem,'%Y-%m-%d')
new_calendar['Year']=listdate.year
new_calendar['Month']=listdate.month
new_calendar['Date']=listdate.day
# add the other columns
new_calendar['listId']=calendar.iloc[i,0]
new_calendar['available']=calendar.iloc[i,2]
new_calendar['price']=calendar.iloc[i,3]
new_calendar=pd.DataFrame.from_records(new_calendar,index=[i])
#change new_calendar data type from dic to pd dataframe
calendar_total=calendar_total.append(new_calendar)
i=i+1
return calendar_total
同样,我们的目标是从第一天开始提取年/月/日。列并将它们转换为新的数据帧。还能在本地运行python代码吗?
由于
答案 0 :(得分:0)
这就是我将现有数据框中的年,月和日提取到新数据框中的方法:
import numpy as np
import pandas as pd
df = pd.DataFrame({'date' : pd.date_range("19970202", periods=365*20)})
df2 = pd.DataFrame({'year' : df['date'].dt.year, 'month' : df['date'].dt.month, 'day' : df['date'].dt.day})
print (df)
print (df2)
我还没有测试过这个大数据集(130万行?),但也许这会给你一个加速。