問題:給定一個數據框有幾個條目和一個形式爲「%Y%m%d」的日期列(即yyyy-mm-dd;這些條目是字符串)什麼是一種快速計算的方式將數據列添加到由月份的詞典順序組成的數據框中?熊貓,groupby絕對月份
爲什麼在StackOverflow:給定一個指定的年份和月份,上述順序允許人們輕鬆地上升或下降相對於指定月份的任何月數。我有一個有效的臨時解決方案,但想象之前這個問題已經被優雅地解決了。
上下文:舉例來說,給定數據幀DF:
date user
0 2011-10-06 1
1 2011-09-01 2
2 2011-11-05 3
3 2012-01-01 1
4 2012-01-01 2
5 2012-01-02 3
期望的輸出是:
date user absmonth
0 2011-10-06 1 2
1 2011-09-01 2 1
2 2011-11-05 3 3
3 2012-01-01 1 4
4 2012-01-01 2 4
5 2012-01-02 3 4
我已經試過:
1)我做了一個adhoc def,它基於簡單的算術設置'absmonth'的值;通過df.loc[row, 'absmonth'] = ...
爲每一行。這個「工作」,但計算上很慢很。
2)使用GROUPBY:
df['newdate']=pd.to_datetime(df['date'],format='%Y-%m-%d')
df = df.set_index('newdate')
monthsgroup = df.groupby(df.index.month, df.index.year)
產生錯誤:
axis = self._AXIS_ALIASES.get(axis, axis)
TypeError: unhashable type: 'numpy.ndarray'
也:
months = df.gropuby(df.index.month)
len(months)
4
在這一點上,我應該能夠使用類似df
使用months
「應用」功能,但有點丟失...
PS:
pd.__version__
'0.14.0'
幫助理解。
不知道你lexagraphic順序是什麼意思幾個月?這個月是按英文順序排列的嗎? – Joop 2014-10-20 09:06:33
在所有數字對(Y,m)的集合上詞典編纂。即我們寫出「(Y,m)<(Y',m')」當且僅當以下成立爲自然數:i)Y
wheatgrassman
2014-10-20 13:06:51