熊猫具有多索引的高级横截面

熊猫具有多索引的高级横截面,第1张

熊猫具有多索引的高级横截面

这是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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5664258.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存