Python 带多个条件和检索值的df.loc索引

Python 带多个条件和检索值的df.loc索引,python,pandas,Python,Pandas,我无法理解1.1.4版文档中的这个示例 In [45]: df1 Out[45]: A B C D a 0.132003 -0.827317 -0.076467 -1.187678 b 1.130127 -1.436737 -1.413681 1.607920 c 1.024180 0.569605 0.875906 -2.211372 d 0.974466 -2.006747 -0.410001 -0.0786

我无法理解1.1.4版文档中的这个示例

In [45]: df1
Out[45]: 
          A         B         C         D
a  0.132003 -0.827317 -0.076467 -1.187678
b  1.130127 -1.436737 -1.413681  1.607920
c  1.024180  0.569605  0.875906 -2.211372
d  0.974466 -2.006747 -0.410001 -0.078638
e  0.545952 -1.219217 -1.226825  0.769804
f -1.281247 -0.727707 -0.121306 -0.097883
然后使用标签将其切片

In [50]: df1.loc[:, df1.loc['a'] > 0]
Out[50]: 
          A
a  0.132003
b  1.130127
c  1.024180
d  0.974466
e  0.545952
f -1.281247
但索引“f”处的值小于零


条件在索引“a”上,那么为什么它返回整个第一列呢?

让我们先看看下面的特定代码段。所以当你这么做的时候

df.loc['a']>0
这将选择满足此条件的
索引
“a”的所有值。在这种情况下,只有与索引“a”对应的列a的值大于0

输出:

A     True
B    False
C    False
D    False
Name: a, dtype: bool
现在有了这个命令df.loc[:,df.loc['a']>0,您实际上要做的是:

df.loc['a':'f',[True,False,False,False]]
您在这里要求为所有索引选择df的第一列。在您的df中,您在这里要求的只是列“A”,所以它会打印出来

    A
a   0.132003
b   1.130127
c   1.024180
d   0.974466
e   0.545952
f   -1.281247
查看以了解
df.loc
工作原理的详细信息