这是的应用程序(也是使用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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)