为了账号安全,请及时绑定邮箱和手机立即绑定

通过整数索引选择一行熊猫系列/数据框

通过整数索引选择一行熊猫系列/数据框

皈依舞 2019-11-05 10:53:04
我很好奇,为什么df[2]不支持,而df.ix[2]与df[2:3]这两个工作。In [26]: df.ix[2]Out[26]: A    1.027680B    1.514210C   -1.466963D   -0.162339Name: 2000-01-03 00:00:00In [27]: df[2:3]Out[27]:                   A        B         C         D2000-01-03  1.02768  1.51421 -1.466963 -0.162339我希望df[2]以df[2:3]与Python索引约定一致的方式进行工作。是否有设计原因不支持按单个整数索引行?
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

DataFrame索引运算符的主要目的[]是选择列。

当索引运算符传递字符串或整数时,它将尝试查找具有该特定名称的列并将其作为Series返回。


因此,在上述问题中:df[2]搜索与整数值匹配的列名2。该列不存在,并且KeyError引发a。


使用切片符号时,DataFrame索引运算符完全更改行为以选择行

奇怪的是,当给定切片时,DataFrame索引运算符会选择行,并可以通过整数位置或通过索引标签来选择行。


df[2:3]

这将从整数位置为2的行开始切为3,最后一个元素除外。因此,只需一行。下面的代码选择从整数位置6开始的行,直到每第三行不包括20的行。


df[6:20:3]

如果DataFrame索引中包含字符串,则还可以使用由字符串标签组成的切片。有关更多详细信息,请参见.iloc与.loc上的此解决方案。


我几乎从未将这种切片符号与索引运算符一起使用,因为它不是显式的,而且几乎从未使用过。按行切片时,请坚持使用.loc/.iloc。


查看完整回答
反对 回复 2019-11-05
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您可以看一下源代码。


DataFrame具有对_slice()进行切片的私有函数DataFrame,并且它允许参数axis确定要切片的轴。将__getitem__()用于DataFrame在调用不设置轴_slice()。因此_slice(),默认情况下将其切片为轴0。


您可以进行一个简单的实验,这可能对您有所帮助:


print df._slice(slice(0, 2))

print df._slice(slice(0, 2), 0)

print df._slice(slice(0, 2), 1)


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 362 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信