问题:给定一个数据框有几个条目和一个形式为“%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