繁体   English   中英

熊猫groupby last行为不符合预期

[英]Pandas groupby last does not behave as expected

由于某种原因,简单的last操作不适用于我的数据框:

df
Out[57]: 


   month     date      value
0 2013-01-01 2013-01-25 0.0223
1 2013-01-01 2013-01-28 0.0006
2 2013-01-01 2013-01-29 0.0071
3 2013-01-01 2013-01-30 0.0062
4 2013-01-01 2013-01-31 0.0037
5 2013-02-01 2013-02-01 0.0151
6 2013-02-01 2013-02-04 0.012
7 2013-02-01 2013-02-05 0.0181
8 2013-02-01 2013-02-06 -0.0075
9 2013-02-01 2013-02-07 -0.0057

10 rows × 3 columns 

df.groupby('month').last()
Out[58]: 


           date      value
month
2013-01-01 2013-01-01 2013-01-01
2013-02-01 2013-02-01 2013-02-01

2 rows × 2 columns 

df.dtypes
Out[59]: 
month    datetime64[ns]
date     datetime64[ns]
value            object
dtype: object

我正在使用熊猫13.1。 这是一个新错误吗?

这是0.13.1中的错误。 已在master / 0.14(不久后释放)中修复。 同样在0.14中,它将强制将value列强制为float64 (出于某种原因,您将其作为object ;对于类似float的列,这绝对不是一件好事)。

这是0.13.1的解决方法(多余的月份列也将在0.14中消失)。

In [14]: df.groupby('month').tail(1)
Out[14]: 
                  month       date   value
month                                     
2013-01-01 4 2013-01-01 2013-01-31  0.0037
2013-02-01 9 2013-02-01 2013-02-07 -0.0057

[2 rows x 3 columns]

这是0.14 /主输出

In [32]: df.groupby('month').last()
Out[32]: 
                 date   value
month                        
2013-01-01 2013-01-31  0.0037
2013-02-01 2013-02-07 -0.0057

In [33]: df.groupby('month').last().dtypes
Out[33]: 
date     datetime64[ns]
value           float64
dtype: object

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM