让我们假设我需要一个过滤器的“起点”。如何获取列中所有值的布尔索引为“ 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
我可能只是想弄明白吗?还是没有人问这个问题?
答案 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)
输出我认为您正在寻找的答案。 )