我想有一些更好的和自動的方式來做到這一點,但如果沒有,那麼這應該是一個體面的解決方法。首先,讓我們建立了一些樣本數據:
np.random.seed(479)
start_date = '2011-1-1'
df = pd.DataFrame({ 'date':np.random.choice(
pd.date_range(start_date, periods=365*5, freq='D'), 50) })
df['rel'] = df['date'] - pd.to_datetime(start_date)
df.rel = df.rel.astype('timedelta64[D]')
date rel
0 2014-06-06 1252
1 2011-10-26 298
2 2013-08-24 966
3 2014-09-25 1363
4 2011-12-23 356
正如你所看到的,「相對」僅僅是因爲起始日天數。它本質上是一個整數,所以你真正需要做的就是相對於開始日期對它進行規範化。
df['year_as_float'] = pd.to_datetime(start_date).year + df.rel/365.
date rel year_as_float
0 2014-06-06 1252 2014.430137
1 2011-10-26 298 2011.816438
2 2013-08-24 966 2013.646575
3 2014-09-25 1363 2014.734247
4 2011-12-23 356 2011.975342
你需要稍微調整,對於日期沒有啓動一月1這也忽略任何閏年這實在不是一個實際的問題,如果你只是產生一個KDE情節超過5年,但取決於你可能想做什麼,這可能很重要。
這裏的情節
df['year_as_float']d.plot(kind='kde')
看看KDE-情節seaborn:http://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.kdeplot.html – Moritz