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语法
任何其他建议?
我对此很陌生,所以如果我是个白痴,请保持温和。
感谢您的帮助
答案 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