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
答案 0 :(得分:1)
df.groupby("A")['B'].agg('nunique')
答案 1 :(得分:0)
对我来说,这似乎是一个“错字”。 “A”和“B”应该相反。
df.groupby("B")['A'].agg(lambda s: s.nunique())