使用[index,:]格式进行Python子集化和切片

时间:2016-03-15 23:59:01

标签: python pandas dataframe

我曾经看过python DataFrames有时会使用[index,:]符号进行子集化,有时使用[index]就足够了。

使用简单的玩具示例:

df = pd.DataFrame({'a':[1,5,10,15,20,50,88]})
idx = [2,4,6]

我们可以使用以下任何一种来调用iloc方法:

df.iloc[idx,:]
df.iloc[idx]

获得结果:

    a
2  10
4  20
6  88

通话方法之间有什么区别吗?我应该更喜欢使用一个吗?

2 个答案:

答案 0 :(得分:1)

主要是他们一样。

  

假设未遵守规范的轴为:。 (例如。   p.loc [' a']等同于p.loc [' a',:,:])

     

Different Choices for Indexing

答案 1 :(得分:1)

df.iloc[idx,:]中,冒号在列上切片。在python中使用[:]时,您会切换所有选项。例如:

df = pd.DataFrame({'a':[1,5,10,15,20,50,88], 'b':[1,5,10,15,20,50,88]})
idx = [2,4,6]

没有列切片:

df.iloc[idx]

输出:

    a   b
2   10  10
4   20  20
6   88  88

使用列切片:

df.iloc[idx,:1]

输出:

    a
2   10
4   20
6   88

在这种情况下,问题是您是否要显式切片所有列。在我的谦虚意见中,我认为它将作为标准格式df.iloc[idx]显而易见。

http://pandas.pydata.org/pandas-docs/stable/indexing.html#selection-by-position