Pandas:根据条件为多索引数据框的子集设置值的正确方法

Pandas:根据条件为多索引数据框的子集设置值的正确方法,第1张

Pandas:根据条件为多索引数据框的子集设置值的正确方法

这是的应用程序(也是使用MultiIndex Slicers的主要动机之一),请参见此处的文档

In [20]: df = pd.Dataframe({('A','a'): [-1,-1,0,10,12],        ('A','b'): [0,1,2,3,-1],        ('B','a'): [-20,-10,0,10,20],        ('B','b'): [-200,-100,0,100,200]})In [21]: dfOut[21]:     A      B         a  b   a    b0  -1  0 -20 -2001  -1  1 -10 -1002   0  2   0    03  10  3  10  1004  12 -1  20  200In [22]: idx = pd.IndexSliceIn [23]: mask = df.loc[:,idx['A',:]]<0In [24]: maskOut[24]:        A   a      b0   True  False1   True  False2  False  False3  False  False4  False   TrueIn [25]: df[mask] = 0In [26]: dfOut[26]:     A      B         a  b   a    b0   0  0 -20 -2001   0  1 -10 -1002   0  2   0    03  10  3  10  1004  12  0  20  200

由于您使用的是列索引的第一级,因此以下内容也将适用。上面的示例更为笼统,说您想对“ a”执行此 *** 作。

In [30]: df[df[['A']]<0] = 0In [31]: dfOut[31]:     A      B         a  b   a    b0   0  0 -20 -2001   0  1 -10 -1002   0  2   0    03  10  3  10  1004  12  0  20  200


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

原文地址: http://outofmemory.cn/zaji/5645835.html

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

发表评论

登录后才能评论

评论列表(0条)

保存