0
点赞
收藏
分享

微信扫一扫

ArcGIS Pro 1.4 Pandas包导入的一个Bug修复全过程


Pandas——熊猫包是Python里面一个超级神器,特别对于熟悉R语言的同学(比如虾神我这种),对pandas里面的DataFrame那是犹如他乡遇故知般的热泪盈眶啊。


而且Pandas在大数据处理领域,号称所有包里面的的No.1,因为它的存在,GB级上亿条的数据可以直接使用单机完成,具体可以查看下面文章:

《用Python Pandas处理亿级数据》

​​http://python.jobbole.com/84118/​​

这个包不但强大,而且还挺复杂,虽然网上各种流传啥《十分钟搞定Pandas》类似的文章,但是下面是Pandas的官方文档,Look:

ArcGIS Pro 1.4 Pandas包导入的一个Bug修复全过程_format



1937页的官方文档……打印出来砸死人妥妥没问题。


难怪会出现各种简化教程的,否则啃官方文档都能把人撑死。


正因为这个神器包如此的流弊,所以虾神习惯了在任何Python的环境下都把它安装好,用起来。这段时间正好在弄公司要求推广的ArcGIS新的桌面客户端软件ArcGIS Pro,所以顺手也准备在Pro里面用起来(至于Pro是啥,大家有兴趣去网上找找资料,简单来说这个软件有如下优点:

1、64位客户端(专门为了灭ArcMap的32位的)

2、二三维一体化。

3、强大的本地、网络一体化资源利用。

4、帅……好吧,这一条就够了。


最后,Pro用的Python是3.5的版本……意味中Python中文编码再也不是问题了。

放张图片出来:

ArcGIS Pro 1.4 Pandas包导入的一个Bug修复全过程_format_02



但是我在Pro中使用Pandas的时候,突然出了这样一个问题:

ArcGIS Pro 1.4 Pandas包导入的一个Bug修复全过程_pandas_03



我去……这一刻,虾神的表情这样的:

ArcGIS Pro 1.4 Pandas包导入的一个Bug修复全过程_pandas_04



embedded null byte……嵌入了空的字节是什么鬼……


回头检查了一下报错的Python源文件calencar.py,这是一个设置返回时间的文件,然后看看报错的语句:funcs(self.format)……


瞬间就恍然大悟了。





这是因为中文版操作系统中时间格式设置的问题,ArcGIS Pro读取系统的时间设置,燃鹅,Python用的是默认的设置,这样就起了冲突了,所以如果先运行一下语句:

#把Python的本地格式设为英文模式



import locale

locale.setlocale(locale.LC_ALL,'en')

再导入pandas的话:

ArcGIS Pro 1.4 Pandas包导入的一个Bug修复全过程_Pro_05


就木有问题了。


为了方便,可以把这句话加入到报错的py文件中:


在D:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\calendar.py

前面那一段,是你ArcGIS Pro安装的位置,自己找,后面是要修改的文件


在头部加入以下代码:

_locale.setlocale(_locale.LC_ALL, 'en')


如下所示:

ArcGIS Pro 1.4 Pandas包导入的一个Bug修复全过程_pandas_06




加入完成保存,重启ArcGIS Pro,在导入pandas的时候,就木问题了:

下面测试一下:

ArcGIS Pro 1.4 Pandas包导入的一个Bug修复全过程_Pro_07



打完收工。


举报

相关推荐

0 条评论