
这是0.14.0中的新功能,请参阅此处的whatsnew
。这有效地替代了的需求
.xs。
In [8]: idx = pd.IndexSliceIn [9]: df.loc[:,idx[:,:,[2,3]]]Out[9]: first A B second a b a b third 2 3 2 3 2 3 2 30 1.770120 -0.362269 -0.804352 1.549652 0.069858 -0.274113 0.570410 -0.4609561 -0.982169 2.044497 0.571353 0.310634 -1.865966 -0.862613 0.124413 0.6454192 -1.412519 0.168448 0.081467 -0.220464 1.033748 1.561429 0.094363 0.2547683 -0.653458 -0.978661 0.158708 -0.818675 -1.122577 0.026941 2.678548 0.8648174 -0.555179 -0.155564 1.148956 1.438523 -1.254660 0.609254 -0.970612 1.519028
减去这是不平凡的。
[107]: df = pd.Dataframe(np.arange(5*12).reshape(-1,12), columns=col)In [108]: dfOut[108]: first A B second abab third 1 2 3 1 2 3 1 2 3 1 2 30 0 1 2 3 4 5 6 7 8 9 10 111 12 13 14 15 16 17 18 19 20 21 22 232 24 25 26 27 28 29 30 31 32 33 34 353 36 37 38 39 40 41 42 43 44 45 46 474 48 49 50 51 52 53 54 55 56 57 58 59
Pandas希望对齐rhs一侧(毕竟,您要跟踪不同的索引),因此您需要手动广播它。这是关于此的问题:https
:
//github.com/pydata/pandas/issues/7475
In [109]: df.loc[:,idx[:,:[2,3]]] = df.loc[:,idx[:,:,[2,3]]]-np.tile(df.loc[:,idx[:,:,1]].values,2)Out[109]: first AB second a b a b third 2 3 2 3 2 3 2 30 1 -1 -2 -4 7 5 4 21 1 -1 -2 -4 7 5 4 22 1 -1 -2 -4 7 5 4 23 1 -1 -2 -4 7 5 4 24 1 -1 -2 -4 7 5 4 2
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)