假设我有以下数据框:
tmp = np.random.randn(10,4)
df = pd.DataFrame(tmp, index=pd.date_range('1/1/2012', periods=tmp.shape[0]),
columns=['A', 'B', 'C', 'D'])
> b
A B C D
2012-01-01 0.471846 1.130041 -0.614117 0.882738
2012-01-02 -1.431566 0.680617 -0.615331 0.288740
2012-01-03 0.398567 -0.115388 -0.869855 -1.273666
2012-01-04 0.379501 0.192329 -1.942184 0.694004
2012-01-05 1.306329 -0.803856 0.417033 -0.655907
2012-01-06 -0.599877 0.696549 -0.252789 1.367977
2012-01-07 -1.618916 0.216571 -0.499880 0.386853
2012-01-08 0.415002 0.139775 0.251842 0.021379
2012-01-09 2.536787 0.737672 -0.740485 -0.890189
2012-01-10 -1.553530 -0.100950 -0.237478 -0.295612
我能怎么做:
- 特定行/列的位置索引?(并获取对应的子数据框)
- 行/列范围的位置索引?(并获取对应的子数据框)
对于单项矩阵索引:
例如,假设我想在位置索引子数据帧[1,2]
(在 numpy “matricial” 表示法中)。输出应该是:
C
2012-01-02 -0.615331
我尝试了以下三种方法,但都没有奏效::
df[1,2]
df[1][2]
df.take([1])[2]
唯一有效的方法似乎是:
df.ix[1,2]
df.irow(1)[2]
但:
使用位置索引是危险的,因为如果我的索引是整数(与上述情况中的日期相反),
.ix
它将默认为标签索引。在此处查看更多信息:开始:停止切片 numpy 和 Pandas 之间的不一致?.使用
irow
很麻烦,因为它需要从()
符号切换到[]
符号(irow
返回一个Series
对象)
对于范围矩阵索引:
例如,假设我想[1:3,2:3]
在(numpy 矩阵符号)中的位置索引元素。输出应该是:
B
2012-01-02 -0.615331
2012-01-03 -0.869855
请注意,我不包括停止索引(即我坚持使用 numpy 表示法)。
有什么想法吗?