在使用pandas 0.23.4对日期进行分组排序时报错
date_df["rank_num"] = date_df.groupby("issuer_id").report_date.agg("rank", **{"ascending": 1, "method": "min"})
File "D:\python_virtualenv\es_env\lib\site-packages\pandas\core\groupby\groupby.py", line 3479, in aggregate
return getattr(self, func_or_funcs)(*args, **kwargs)
File "D:\python_virtualenv\es_env\lib\site-packages\pandas\core\groupby\groupby.py", line 1906, in rank
na_option=na_option, pct=pct, axis=axis)
File "D:\python_virtualenv\es_env\lib\site-packages\pandas\core\groupby\groupby.py", line 1025, in _cython_transform
**kwargs)
File "D:\python_virtualenv\es_env\lib\site-packages\pandas\core\groupby\groupby.py", line 2630, in transform
return self._cython_operation('transform', values, how, axis, **kwargs)
File "D:\python_virtualenv\es_env\lib\site-packages\pandas\core\groupby\groupby.py", line 2590, in _cython_operation
**kwargs)
File "D:\python_virtualenv\es_env\lib\site-packages\pandas\core\groupby\groupby.py", line 2664, in _transform
transform_func(result, values, comp_ids, is_datetimelike, **kwargs)
File "D:\python_virtualenv\es_env\lib\site-packages\pandas\core\groupby\groupby.py", line 2479, in wrapper
return f(afunc, *args, **kwargs)
File "D:\python_virtualenv\es_env\lib\site-packages\pandas\core\groupby\groupby.py", line 2430, in <lambda>
kwargs.get('na_option', 'keep')
TypeError: 'NoneType' object is not callable
在使用pandas对一列日期进行分组排序时报错,
1. 根据错误提示 File "D:\python_virtualenv\es_env\lib\site-packages\pandas\core\groupby\groupby.py", line 2430, in <lambda> kwargs.get('na_option', 'keep') 可知,是因为pandas模块的groupby.py文件的下面代码中func函数传入为None导致的。
'f': lambda func, a, b, c, d, **kwargs: func(
a, b, c, d,
kwargs.get('ties_method', 'average'),
kwargs.get('ascending', True),
kwargs.get('pct', False),
kwargs.get('na_option', 'keep')
)
2. 根据错误提示
File "D:\python_virtualenv\es_env\lib\site-packages\pandas\core\groupby\groupby.py", line 2478, in wrapper return f(afunc, *args, **kwargs)
可知afunc就是传入的函数,这个afunc是使用get_func函数一步步获取的,最终是看_libs\groupby.py文件下是否存在一个group_rank_object函数,但是文件中没有,所以获得的是None。
def _get_cython_function(self, kind, how, values, is_numeric):
# 这一步查看values中的数据类型,date无法识别,datetime识别为int
dtype_str = values.dtype.name
def get_func(fname):
# see if there is a fused-type version of function
# only valid for numeric
# 这一步看libgroupby中是不是有fname对应的函数
f = getattr(libgroupby, fname, None)
if f is not None and is_numeric:
return f # otherwise find dtype-specific version, falling back to object
# 再看是不是有group_rank_object函数,因为没有,所以最后返回的结果是None
for dt in [dtype_str, 'object']:
f = getattr(libgroupby, "%s_%s" % (fname, dtype_str), None)
if f is not None:
return f ftype = self._cython_functions[kind][how] if isinstance(ftype, dict):
# 这一步获取传入的函数afunc
func = afunc = get_func(ftype['name'])
# a sub-function
f = ftype.get('f')
if f is not None: def wrapper(*args, **kwargs):
return f(afunc, *args, **kwargs) # need to curry our sub-function
func = wrapper
3.结论
(1).0.23.4的pandas没有对object的排序方式,只存在针对int和float的排序方式。
(2).0.23.4的pandas无法识别date类型,是作为object类型。但是可以识别datetime类型,会把datetime类型识别为int来处理。
(3).所以要对日期列进行排序,需要先转换成时间才行。
0.23版本的pandas存在这个问题,但是0.22版本没有这个问题。
在使用pandas 0.23.4对日期进行分组排序时报错的更多相关文章
- pandas 0.19.0 documentation
pandas 0.19.0 documentation » http://pandas.pydata.org/pandas-docs/stable/style.html
- [EXP]Apache Superset < 0.23 - Remote Code Execution
# Exploit Title: Apache Superset < 0.23 - Remote Code Execution # Date: 2018-05-17 # Exploit Auth ...
- [EXP]ThinkPHP 5.0.23/5.1.31 - Remote Code Execution
# Exploit Title: ThinkPHP .x < v5.0.23,v5.1.31 Remote Code Execution # Date: -- # Exploit Author: ...
- 【Mysql】【Navicat For Mac】Navicat Premium for Mac v12.0.23 + macOS Sierra 10.12.6
参考地址:https://blog.csdn.net/womeng2009/article/details/79700667 [备注]我只用到了部分信息,就激活了 内容: Navicat Premiu ...
- resin4.0.23+nginx1.1集群
一,web服务器小论 以前的公司使用的web服务器是tomcat(tomcat+apache作集群),现在的公司是一家互联网公司,采用的架构是resin+nginx作集群(resin比tomcat快? ...
- ThinkPHP-5.0.23新的RCE漏洞测试和POC
TP5新RCE漏洞 昨天又是周五,讨厌周五曝漏洞,还得又得加班,算了,还是先验证一波.新的TP5RCE,据说发现者因为上次的RCE,于是又审计了代码,结果发现的.TP5也成了万人轮啊. 测试 环境搭建 ...
- ThinkPHP 更新 5.0.23 和 5.1.31
ThinkPHP 更新 5.0.23 和 5.1.31 FastAdmin 也跟着更新. V1.0.0.20181210_beta 修复 ThinkPHP5.0发布了一个重要安全更新,强烈建议更新 修 ...
- Navicat Premium v12.0.23.0 破解教程x86,x64通用,手动破解
教程来源于:吾爱破解网站 ----------更新线----------- 2018.01.23 Navicat Premium v12.0.23.0 测试破解依然有效 ----------更新线-- ...
- Navicat Premium v12.0.23.0 安装,使用激活码激活
1 下载 可以直接官网下载安装包,也可以直接到我的云盘下载 下载地址:https://pan.baidu.com/s/1apwU9cIKBTr-z0CuJEJ9gg 文件包中包含下面的文件: 2 安装 ...
随机推荐
- bzoj 1415: [Noi2005]聪聪和可可 期望dp+记忆化搜索
期望dp水题~ 你发现每一次肯定是贪心走 2 步,(只走一步的话就可能出现环) 然后令 $f[i][j]$ 表示聪在 $i$,可在 $j$,且聪先手两个人碰上面的期望最小次数. 用记忆化搜索转移就行了 ...
- Educational Codeforces Round 70
目录 Contest Info Solutions A. You Are Given Two Binary Strings... B. You Are Given a Decimal String.. ...
- Codeforces Round #528 (Div. 2)题解
Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...
- nasm汇编讲解
一.什么是nasm汇编 nasm使用在windows.linux等系统下的汇编. 二.语法介绍 2.1 nasm 是区分大小写 例如:符号 foo 与 FOO 是两个不同的标识符. 2.2 内存操作数 ...
- 生成一张带有logo的二维码图片
string url = 二维码内容; , , Encoding.UTF8); // 合成活动的LOGO图片 var hasImage = GlobalTools.GetCommonContent(& ...
- Python基础之只接收关键字参数的函数
当我们希望函数的某些参数强制使用关键字参数时,可以将强制关键字参数放到某个*后面就能得到这种效果.比如: def recv(maxsize, *, block): """ ...
- 重启hdfs集群的时候,报大量的gc问题。
问题现象: 2019-03-11 12:30:52,174 INFO org.apache.hadoop.util.JvmPauseMonitor: Detected pause in JVM or ...
- spring boot 之登录笔记
在测试平台的开发中,会牵涉到登录内容,页面需要登录后才能访问,所以,对于登录的开发是很有必要的.本文记录我在系统登录的一些自己的做法. 首先对登录进行设计. 如下: 1.登录密码输入错误超过次数限制 ...
- GO 类型断言
在Go语言中,我们可以使用type switch语句查询接口变量的真实数据类型,语法如下: switch x.(type) { // cases } x必须是接口类型. 来看一个详细的示例: type ...
- Delphi BASE64单元EncdDecd的修改
Delphi BASE64单元EncdDecd的修改 EncdDecd.pas两个函数声明: procedure EncodeStream(Input, Output: TStream);proced ...