假设我们有一个数据框
import pandas as pd
df = pd.read_csv('...')
df
0 1 2 3 4
0 1 2 3 4 5
1 1 2 3 4 5
2 1 2 3 4 5
3 1 2 3 4 5
4 1 2 3 4 5
为什么一种方法有效,其他方法返回语法错误?
答案 0 :(得分:1)
我认为你需要ix
:
print (df.ix[2:4,2:4])
2 3
2 3 4
3 3 4
4 3 4
答案 1 :(得分:1)
失败是因为2:4
是访问df的键/列的无效语法:
In [73]:
df[[2:4]]
File "<ipython-input-73-f0f09617b349>", line 1
df[[2:4]]
^
SyntaxError: invalid syntax
如果你定义了一个dict并尝试了相同的语法,这没有什么不同:
In [74]:
d = {0:0,1:1,2:2,3:3,4:4,5:5}
d
Out[74]:
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5}
In [76]:
d[[2:4]]
File "<ipython-input-76-ea5d68adc389>", line 1
d[[2:4]]
^
SyntaxError: invalid syntax
[]
语法用于访问匹配的列标签,您不能在列表中传递切片来访问像这样的列范围,它需要是一个值列表,因为您已经已找到
iloc
,ix
和loc
等新方法支持切片范围
什么对您有用,最初使用列表中的标签选择列:
In [77]:
df[[2,3,4]]
Out[77]:
2 3 4
0 3 4 5
1 3 4 5
2 3 4 5
3 3 4 5
4 3 4 5
然后通过切片选择行:
In [79]:
df[[2,3,4]][2:4]
Out[79]:
2 3 4
2 3 4 5
3 3 4 5