日期时间的pandas agg返回错误的结果

时间:2017-03-23 15:19:28

标签: python pandas

groupby.agg()为datatime系列返回不正确的结果(或者说非常误导)。这是代码片段(Pandas版本:0.19):

In [4]: df = pd.DataFrame({'A':[1,2,3,4],'B':pd.to_datetime("2017-01-01")})

In [5]: df
Out[5]: 
   A          B
0  1 2017-01-01
1  2 2017-01-01
2  3 2017-01-01
3  4 2017-01-01

In [6]: df.groupby("A")['B'].agg(lambda s: s.nunique())

由于只有一个值,我希望返回只是1,但实际结果很奇怪:

Out[6]: 
A
1   1970-01-01 00:00:00.000000001
2   1970-01-01 00:00:00.000000001
3   1970-01-01 00:00:00.000000001
4   1970-01-01 00:00:00.000000001
Name: B, dtype: datetime64[ns]

nunique本身按预期工作,因此问题似乎出现在agg

In [7]: df['B'].nunique()
Out[7]: 1

2 个答案:

答案 0 :(得分:1)

df.groupby("A")['B'].agg('nunique')

答案 1 :(得分:0)

对我来说,这似乎是一个“错字”。 “A”和“B”应该相反。

df.groupby("B")['A'].agg(lambda s: s.nunique())