假设我们有一个datarame为什么DF [2,3,4] [2:4]作品和DF [2:4] [2:4]不使用Python
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
为什么一种方法正在工作而其他返回语法错误?
假设我们有一个datarame为什么DF [2,3,4] [2:4]作品和DF [2:4] [2:4]不使用Python
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
为什么一种方法正在工作而其他返回语法错误?
它失败,因为2:4
是无效的语法来访问键/一DF的列:
In [73]:
df[[2:4]]
File "<ipython-input-73-f0f09617b349>", line 1
df[[2:4]]
^
SyntaxError: invalid syntax
这是,如果你没有定义不同字典,并尝试相同的语法:
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
The []
语法用于访问匹配的列标签,您不能通过列表中的切片访问像这样的列的范围,它需要是您已经找到的值列表
较新的方法如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
我想你需要ix
:
print (df.ix[2:4,2:4])
2 3
2 3 4
3 3 4
4 3 4
很酷,感谢那jezrael –
对不起,我的coleague找到了我。现在我看到第二个答案,我认为这是非常好的解释。我认为最好的选择是使用['ix'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.ix.html),['iloc'](http ://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.iloc.html)或['loc'](http://pandas.pydata.org/pandas-docs/stable/generated/ pandas.DataFrame.loc.html)。 – jezrael