如何在python pandas中切片数组标签?

时间:2014-01-14 19:09:17

标签: python numpy pandas scipy

pandas数据帧标签可以是数组,例如,而不是['a','b','c'],因为列I [(0,10),(1,11),(2,12)]。

我的数组名为df,我只有2行,0和1。

我想对数组进行切片,以便对于第0行,我得到列(1,11)和(2,12)的结果。

使用

a.loc[0,[(1,11)]:[(2,12)]] 

a.loc[0,[(1,11):(2,12)]] 

似乎没有用,有各种错误,如

TypeError:不可用类型:'list'或 语法错误:Invaid语法

任何其他建议?

我对此很陌生,所以如果我是个白痴,请保持温和。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

尝试a[[(1, 11), (2, 12)]].loc[0]

我认为没有办法要求 slice 元组,但您可以指定它们的完整列表

通常,将元组作为列标签是不方便的。也许这些是MultiIndex的一部分。如果有更简单的方法来组织你的数据,我建议只使用它作为最后的手段。

答案 1 :(得分:0)

您可以使用ix方法:

>>> df = pd.DataFrame(np.random.randn(2, 4), 
...           columns=[(0,1),(2,3),(3,4),(5,6)], 
...           index=list('ab'))
>>> df.ix['a', 1:3]
(2, 3)   -0.17856
(3, 4)    0.34741
Name: a, dtype: float64
>>> df.ix['a', [(0,1), (2,3)]]
(0, 1)    0.567471
(2, 3)   -0.178560
Name: a, dtype: float64