如果我们在列中有一个已知值,我们如何获得其索引值?例如:
In [148]: a = pd.DataFrame(np.arange(10).reshape(5,2),columns=['c1','c2'])
In [149]: a
Out[149]:
c1 c2
0 0 1
1 2 3
2 4 5
........
Run Code Online (Sandbox Code Playgroud)
我们知道,我们可以通过与之对应的索引获取值,就像这样.
In [151]: a.ix[0,1] In [152]: a.c2[0] In [154]: a.c2.ix[0] <-- use index
Out[151]: 1 Out[152]: 1 Out[154]: 1 <-- get value
Run Code Online (Sandbox Code Playgroud)
但是如何按价值获得指数?
像这样的样本:
In [39]: ts = pd.Series(np.random.randn(20),index=pd.date_range('1/1/2000',periods=20))
In [40]: t = pd.DataFrame(ts,columns=['base'],index=ts.index)
In [42]: t['shift_one'] = t.base - t.base.shift(1)
In [43]: t['shift_two'] = t.shift_one.shift(1)
In [44]: t
Out[44]:
base shift_one shift_two
2000-01-01 -1.239924 NaN NaN
2000-01-02 1.116260 2.356184 NaN
2000-01-03 0.401853 -0.714407 2.356184
2000-01-04 -0.823275 -1.225128 -0.714407
2000-01-05 -0.562103 0.261171 -1.225128
2000-01-06 0.347143 0.909246 0.261171
.............
2000-01-20 -0.062557 -0.467466 0.512293
Run Code Online (Sandbox Code Playgroud)
现在,如果我们使用t [t.shift_one> 0],它可以正常工作,但是当我们使用时:在[48]中:t [t.shift_one> 0和t.shift_two <0] -------- -------------------------------------------------- ----------------- ValueError Traceback(最近一次调用last)in()----> 1 t [t.shift_one> 0和t.shift_two <0]
ValueError: The truth value of …Run Code Online (Sandbox Code Playgroud)