我想基于几个切片选择一些数据帧列的子集。你知道吗
In [1]: df = pd.DataFrame(data={'A': np.random.rand(100), 'B': np.random.rand(100), 'C': np.random.rand(100)})
df.head()
Out[1]: A B C
0 0.745487 0.146733 0.594006
1 0.212324 0.692727 0.244113
2 0.954276 0.318949 0.199224
3 0.606276 0.155027 0.247255
4 0.155672 0.464012 0.229516
比如:
In [2]: df.loc[[slice(1, 4), slice(42, 44)], ['B', 'C']]
预期产量:
Out[2]: B C
1 0.692727 0.244113
2 0.318949 0.199224
3 0.155027 0.247255
42 0.335285 0.000997
43 0.019172 0.237810
我已经看到NumPy的r_对象在想要使用多个切片时可以提供帮助,例如:
In [3]: arr = np.array([1, 2, 3, 4, 5, 5, 5, 5])
arr[np.r_[1:3, 4:6]]
Out[3]: array([2, 3, 5, 5])
但是我不能让它与一些预定义的切片集合(列表)一起工作。理想情况下,我希望能够在此基础上指定范围/切片和子集的集合。我好像不接受iterables?例如,我看到可以使用hstack
创建一个数组,然后将其用作索引,如:
In [4]: idx = np.hstack((np.arange(1, 4), np.arange(42, 44)))
df.loc[idx, ['B', 'C']]
Out[4]: B C
1 0.692727 0.244113
2 0.318949 0.199224
3 0.155027 0.247255
42 0.335285 0.000997
43 0.019172 0.237810
这让我得到了我所需要的,但是有没有其他更快/更干净/更喜欢的/不管怎样的方法?你知道吗
你可以做:
使用
np.hstack
选项大约花费了1/4的时间。你知道吗相关问题 更多 >
编程相关推荐