python - Pandas groupby 最后的行为不符合预期

标签 python pandas

由于某种原因,简单的 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

我正在使用 pandas 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/master 输出

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

关于python - Pandas groupby 最后的行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23688430/

相关文章:

python - hier_block 的行为与 GNU Radio 中的sync_block 的行为究竟有何不同?

python - 寻找有条件的顺序模式

python - 如何在 Pandas 中进行分组、计数然后绘制条形图?

python - 如何使用 pandas DataFrame 将此计算推广到任意数量的列?

python - 连接两个没有值的系列(pandas DataFrame)?

python - 图像处理 - 如何堆叠一 channel 图像以创建 2 channel 阵列

python - 部署多个 Django 项目或应用程序?

python - 相同的神经网络架构在 tensorflow 和 keras 中提供不同的精度

python - 将多个 pandas 数据框列的 groupby 加权平均值作为数据框返回

python - 如何消除 "unsupported operand type(s) for -: ' str' 和 'str' "错误如下?