Pandas注意事项&窍门
警告和疑难意味着一个看不见的问题。在使用Pandas过程中,需要特别注意的地方。
与Pandas一起使用If/Truth语句
当尝试将某些东西转换成布尔值时,Pandas遵循了一个错误的惯例。 这种情况发生在使用布尔运算的。 目前还不清楚结果是什么。 如果它是真的,因为它不是zerolength
? 错误,因为有错误的值? 目前还不清楚,Pandas提出了一个ValueError
-
import pandas as pd
if pd.Series([False, True, False]):
print ('I am True')
执行上面示例代码,得到以下结果 -
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
在if
条件,它不清楚如何处理它。错误提示是否使用None或任何这些。
import pandas as pd
if pd.Series([False, True, False]).any():
print("I am any")
要在布尔上下文中评估单元素Pandas对象,请使用方法.bool()
-
import pandas as pd
print (pd.Series([True]).bool())
执行上面示例代码,得到以下结果 -
True
按位布尔值
按位布尔运算符(如==
和!=
)将返回一个布尔系列,这几乎总是需要的。
import pandas as pd
s = pd.Series(range(5))
print (s==4)
执行上面示例代码,得到以下结果 -
0 False
1 False
2 False
3 False
4 True
dtype: bool
isin操作符
这将返回一个布尔序列,显示系列中的每个元素是否完全包含在传递的值序列中。
import pandas as pd
s = pd.Series(list('abc'))
s = s.isin(['a', 'c', 'e'])
print (s)
执行上面示例代码,得到以下结果 -
0 True
1 False
2 True
dtype: bool
重构索引与ix陷阱
许多用户会发现自己使用ix
索引功能作为从Pandas对象中选择数据的简洁方法 -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(6, 4), columns=['one', 'two', 'three',
'four'],index=list('abcdef'))
print (df)
print ("=============================================")
print (df.ix[['b', 'c', 'e']])
执行上面示例代码,得到以下结果 -
one two three four
a -1.174632 0.951047 -0.177007 1.036567
b -0.806324 -0.562209 1.081449 -1.047623
c 0.107607 0.778843 -0.063531 -1.073552
d -0.277602 -0.962720 1.381249 0.868656
e 0.576266 0.986949 0.433569 0.539558
f -0.708917 -0.583124 -0.686753 -2.338110
=============================================
one two three four
b -0.806324 -0.562209 1.081449 -1.047623
c 0.107607 0.778843 -0.063531 -1.073552
e 0.576266 0.986949 0.433569 0.539558
这当然在这种情况下完全等同于使用reindex
方法 -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(6, 4), columns=['one', 'two', 'three',
'four'],index=list('abcdef'))
print (df)
print("=============================================")
print (df.reindex(['b', 'c', 'e']))
执行上面示例代码,得到以下结果 -
one two three four
a -1.754084 -1.423820 -0.152234 -1.475104
b 1.508714 -0.216916 -0.184434 -2.117229
c -0.409298 -0.224142 0.308175 -0.681308
d 0.938517 -1.626353 -0.180770 -0.470252
e 0.718043 -0.730215 -0.716810 0.546039
f 2.313001 0.371286 0.359952 2.126530
=============================================
one two three four
b 1.508714 -0.216916 -0.184434 -2.117229
c -0.409298 -0.224142 0.308175 -0.681308
e 0.718043 -0.730215 -0.716810 0.546039
有人可能会得出这样的结论,ix
和reindex
是基于这个100%
的等价物。 除了整数索引的情况,它是true
。例如,上述操作可选地表示为 -
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(6, 4), columns=['one', 'two', 'three',
'four'],index=list('abcdef'))
print (df)
print("=====================================")
print (df.ix[[1, 2, 4]])
print("=====================================")
print (df.reindex([1, 2, 4]))
执行上面示例代码,得到以下结果 -
one two three four
a 1.017408 0.594357 -0.760587 1.001547
b -1.480067 1.524270 0.455070 1.886959
c -0.136238 -0.165867 -0.589767 -1.078473
d 0.670576 1.600312 0.219578 -1.121352
e -0.224181 0.958156 0.013055 -0.013652
f 1.576155 -0.185003 -0.527204 -0.336275
=====================================
one two three four
b -1.480067 1.524270 0.455070 1.886959
c -0.136238 -0.165867 -0.589767 -1.078473
e -0.224181 0.958156 0.013055 -0.013652
=====================================
one two three four
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
4 NaN NaN NaN NaN
重要的是要记住,reindex
只是严格的标签索引。这可能会导致一些潜在的令人惊讶的结果,例如索引包含整数和字符串的病态情况。
Pandas注意事项&窍门的更多相关文章
- Pandas | 27 注意事项&窍门
警告和疑难意味着一个看不见的问题.在使用Pandas过程中,需要特别注意的地方. 与Pandas一起使用If/Truth语句 当尝试将某些东西转换成布尔值时,Pandas遵循了一个错误的惯例. 这种情 ...
- python2.7版本win7 64位系统安装pandas注意事项_20161226
经过卸载安装python几经折腾,参考了各种网站,终于安装成功. [成功的步骤] 保存这个python第三方库网站,网址是http://www.lfd.uci.edu/~gohlke/pythonli ...
- Pandas教程目录
Pandas数据结构 Pandas系列 Pandas数据帧(DataFrame) Pandas面板(Panel) Pandas基本功能 Pandas描述性统计 Pandas函数应用 Pandas重建索 ...
- numpy pandas 索引注意事项
pandas.DataFrame 的 iloc # ------------------------------------------------------------ 'python式的切片,包 ...
- python4delphi import lxml pandas 出错的小结
环境: 1.win10 64位 2.delphi xe8 3.python2.7 4.python4delphi (svn 2015-03-21 发布的83版本号) 5.lxml 3.4.4(通过p ...
- 你必须知道的28个HTML5特征、窍门和技术
注意:每周有那么几次,此列表会更新一些新的窍门,最终,本文会成为超级有用的资源.//zxx:丑话说在前头,我可没功夫更新,所以,即使到您女儿出嫁那天,本文还是28项内容 前端的发展如此之迅猛,一不留神 ...
- H5 APP开发必读,20个你不知道的Html5新特征和窍门
Jeffrey Way曾发表过一篇博文<28 HTML5 Features, Tips, and Techniques you Must Know >讲述了28个HTML5特征.窍门和技术 ...
- 我的Pandas应用场景
声明 工作后,很不幸的成为了团队中的QA.QA这个角色吧,说起来高大上,实际很苦逼,一句话概括一下:吃力不讨好!作为新人,公司每月一分钱没少我,至少现在跟开发的待遇是一样的,所以我还是得兢兢业业的对待 ...
- JS学习之路,菜鸟总结的注意事项及错误更正
JavaScript 是一种面向对象的动态语言,它的语法来源于 Java 和 C,所以这两种语言的许多语法特性同样适 用于 JavaScript.需要注意的一个主要区别是 JavaScript 不支持 ...
随机推荐
- TADOConnection和TADQuery组件连接访问数据库总结
首先先来简单了解一下TADOConnection控件和TADOQuery控件作用,如下图: 好了简单对这两个控件有了一个初步的认识了,下面我们就通过两种形式来进行访问数据库:第一种是通过手动配置不需要 ...
- Python开发【第六章】:面向对象
编程范式 编程是程序员用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程,一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种 ...
- screenX clientX pageX区别
screenX:鼠标位置相对于用户屏幕水平偏移量,而screenY也就是垂直方向的,此时的参照点也就是原点是屏幕的左上角. clientX:跟screenX相比就是将参照点改成了浏览器内容区域的左上角 ...
- LAMP兄弟连 视频教程集
电驴的资源:http://www.verycd.com/topics/2843130/?ref=msg
- Java String.split() 使用注意
java的split()方法用于字符串中根据指定的字符进行分割,得到的是一个字符串数组 public String[] split(String regex) Splits this string a ...
- Python3+Selenium3自动化测试-(二)
python3 元素定位和操作方法总结 # coding=utf-8 ''' #8种元素定位方法 find_element_by_id() find_element_by_name() find_el ...
- django 通过orm操作数据库
Django Model 每一个Django Model都继承自django.db.models.Model 在Model当中每一个属性attribute都代表一个database field 通过D ...
- Rest Framework源码流程解析
目录: 一 整体流程 二 具体流程 一 请求进来之后,都要先执行dispatch方法,dispatch方法根据请求方式的不同触发get/post/put/delete等方法 注意,APIView中的d ...
- s5_day5作业
# 1.写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成批量修改操作 # def number_file(file,change_s,change): # import os # with ...
- (转)HttpWebRequest以UTF-8编码写入内容时发生“Bytes to be written to the stream exceed the Content-Length bytes size specified.”错误
from:http://www.cnblogs.com/Gildor/archive/2010/12/13/1904060.html HttpWebRequest以UTF-8编码写入内容时发生“Byt ...