Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 蟒蛇熊猫,我如何传递冒号&引用;通过变量发送到索引器_Python_Pandas - Fatal编程技术网

Python 蟒蛇熊猫,我如何传递冒号&引用;通过变量发送到索引器

Python 蟒蛇熊猫,我如何传递冒号&引用;通过变量发送到索引器,python,pandas,Python,Pandas,我正在研究一种方法,它最终将处理来自大型多索引数据帧的数据片。我可以为每个索引器生成掩码(基本上是定义切片的值列表): 这很好,但在某些情况下,我真的希望选择这些轴上的所有东西,相当于: df.loc[idx[a_mask,b_mask],idx[:,d_mask]] 是否有一种方法可以将冒号“:”作为变量传递到中,以替换第二个示例中的c_掩码?理想情况下,我只需将c_掩码设置为一个值,如“:”,但这当然不起作用(而且不应该这样做,因为如果我们有一个名为that的列会怎么样…)。但有没有办法通

我正在研究一种方法,它最终将处理来自大型多索引数据帧的数据片。我可以为每个索引器生成掩码(基本上是定义切片的值列表):

这很好,但在某些情况下,我真的希望选择这些轴上的所有东西,相当于:

df.loc[idx[a_mask,b_mask],idx[:,d_mask]]
是否有一种方法可以将冒号“:”作为变量传递到中,以替换第二个示例中的c_掩码?理想情况下,我只需将c_掩码设置为一个值,如“:”,但这当然不起作用(而且不应该这样做,因为如果我们有一个名为that的列会怎么样…)。但有没有办法通过变量传递一个值,该变量沿着其中一个索引器传递“整个轴”

我确实意识到我可以生成一个掩码,通过沿适当的轴聚集所有值来选择所有内容,但这并不重要,而且会添加大量代码。同样,我可以将数据帧访问分为5种场景(一种场景中有一个:另一种场景中有四个掩码),但这似乎不符合干燥原则,而且仍然很脆弱,因为它无法处理多方向整片选择

那么,我能通过变量传入的任何东西都会在索引器中选择整个方向,比如:would?还是有一种更优雅的方式可以选择整个方向?

idx[slice(None)]
相当于
idx[:]

所以这些都是等价的

In [11]: df = DataFrame({'A' : np.random.randn(9)},index=pd.MultiIndex.from_product([range(3),list('abc')],names=['first','second']))

In [12]: df
Out[12]: 
                     A
first second          
0     a      -0.668344
      b      -1.679159
      c       0.061876
1     a      -0.237272
      b       0.136495
      c      -1.296027
2     a       0.554533
      b       0.433941
      c      -0.014107

In [13]: idx = pd.IndexSlice

In [14]: df.loc[idx[:,'b'],]
Out[14]: 
                     A
first second          
0     b      -1.679159
1     b       0.136495
2     b       0.433941

In [15]: df.loc[idx[slice(None),'b'],]
Out[15]: 
                     A
first second          
0     b      -1.679159
1     b       0.136495
2     b       0.433941

In [16]: df.loc[(slice(None),'b'),]
Out[16]: 
                     A
first second          
0     b      -1.679159
1     b       0.136495
2     b       0.433941

完美的我可以把它传过去。现在我在文档中也看到了:)
In [11]: df = DataFrame({'A' : np.random.randn(9)},index=pd.MultiIndex.from_product([range(3),list('abc')],names=['first','second']))

In [12]: df
Out[12]: 
                     A
first second          
0     a      -0.668344
      b      -1.679159
      c       0.061876
1     a      -0.237272
      b       0.136495
      c      -1.296027
2     a       0.554533
      b       0.433941
      c      -0.014107

In [13]: idx = pd.IndexSlice

In [14]: df.loc[idx[:,'b'],]
Out[14]: 
                     A
first second          
0     b      -1.679159
1     b       0.136495
2     b       0.433941

In [15]: df.loc[idx[slice(None),'b'],]
Out[15]: 
                     A
first second          
0     b      -1.679159
1     b       0.136495
2     b       0.433941

In [16]: df.loc[(slice(None),'b'),]
Out[16]: 
                     A
first second          
0     b      -1.679159
1     b       0.136495
2     b       0.433941