出于某种原因,简单的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 :(得分:1)
这是0.13.1中的错误。固定在master / 0.14(即将发布)。同样在0.14中,这会将值列强制转换为float64
(由于某种原因,您将其作为object
;对于类似浮点的列,这绝不是一件好事。)
这是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