Python Pandas,布尔索引:如何选择具有“ True”值的所有行

时间:2019-01-24 09:41:43

标签: python indexing boolean

让我们假设我需要一个过滤器的“起点”。如何获取列中所有值的布尔索引为“ True”?

最小示例: ->很明显。如果我的df形状为(2,2),我想获得(2,1)= True的布尔索引。当然,这2行是可变的,列数也是可变的。

import pandas as pd
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)

现在我有一个类似“ col1中的值必须为1”的条件,所以我这样做:

boolean_index = df.loc[:,'col1']==1

返回

0     True
1    False
Name: col1, dtype: bool

但是我想要的是不指定任何条件(例如,不指定boolean_index = df.loc [:,'col1'] == 1 )并返回

0     True
1     True
Name: col1, dtype: bool

我可能只是想弄明白吗?还是没有人问这个问题?

1 个答案:

答案 0 :(得分:0)

尚不清楚您要做什么,但是要获取True列,您可以对其进行过滤:

df = pd.DataFrame({'Col' : ['Something'] * 300})
df['FilterCol'] = df.Col.apply(lambda x : x == 'Something')

然后:

df[df['FilterCol']]

返回所有内容。在lambda函数中将“东西”更改为“无”(或其他任何东西,显然是这样)。

然后,您可以仅基于要过滤的内容来更改lambda函数。

(编辑-根据当前有问题的示例-添加:

df.apply(lambda x : True)

在代码末尾获得所需的答案。)

(编辑2-从新的最小示例开始:

import pandas as pd
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df.apply(lambda x : True, axis=1)

输出为:

0    True
1    True
dtype: bool

没有像您的示例中那样声明名称和dtype,但这是据我所知。

(最终编辑(希望:))

df.col1.apply(lambda x : True)

输出我认为您正在寻找的答案。 )