【发布时间】:2017-01-07 23:11:55
【问题描述】:
我有一个数据框:
df = pd.DataFrame({'c':[0,1,1,2,2,2], 'date':pd.to_datetime(['2016-01-01','2016-02-01','2016-03-01','2016-04-01','2016-05-01','2016-06-01'])})
对于每一行,我想得到一个数字 = 每个日期的月份数(Jan=1,Feb=2 等)+ 该组的长度(第一组有 1 个成员,第二组有 2 个等。 ):
所以它应该返回如下内容:
c date num
0 2016-01-01 2
1 2016-02-01 4
1 2016-03-01 5
2 2016-04-01 7
2 2016-05-01 8
2 2016-06-01 9
我创建了一个函数:
def testlambda(x):
print(x)
return x.dt.month.astype('int') + len(x)
并使用了groupby + transform:
df['num'] = df.groupby(['c'])['date'].transform(lambda x: testlambda(x))
但返回的新列仍然是日期格式,即使我的 lambda 返回 int。
在这里做什么?
【问题讨论】: