我想修改我在下面创建的数据框:
from datetime import date
from dateutil.rrule import rrule, DAILY, YEARLY
from dateutil.relativedelta import *
import pandas
START_YR = 2010
END_YR = 2013
strt_date = datetime.date(START_YR, 1, 1)
end_date = datetime.date(END_YR, 12, 31)
dt = rrule(DAILY, dtstart=strt_date, until=end_date)
serie_1 = pandas.Series(np.random.randn(dt.count()), \
index = pandas.date_range(strt_date, end_date))
如何创建一个将年月日作为单独列的数据框?
最佳答案
只访问 datetime 会快很多属性:
df['date'] = df.index.date
df['year'] = df.index.year
df['month'] = df.index.month
将时间与列表理解方法进行比较:
In [25]:
%%timeit
df['month'] = [ts.to_period('M') for ts in df.index]
df['year'] = [ts.to_period('Y') for ts in df.index]
df['month_int'] = [ts.month for ts in df.index]
1 loops, best of 3: 664 ms per loop
In [26]:
%%timeit
df['date'] = df.index.date
df['year'] = df.index.year
df['month'] = df.index.month
100 loops, best of 3: 5.96 ms per loop
因此使用日期时间属性的速度提高了 100 倍以上
关于python - 修改 Pandas 数据框以列出年月日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29224258/