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

让我们假设我需要一个过滤器的“起始桥”。如何将列中所有值的布尔索引设为“真”?


最小示例:-> 显而易见。如果我有一个形状为 (2, 2) 的 df,我想得到一个 (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

我可能只是愚蠢到想不通?还是没人问这个问题?


梦里花落0921
浏览 332回答 1
1回答

子衿沉夜

不完全清楚您在追求什么,但要获得可以过滤的 True 列:df = pd.DataFrame({'Col' : ['Something'] * 300})df['FilterCol'] = df.Col.apply(lambda x : x == 'Something')然后:df[df['FilterCol']]返回一切。在 lambda 函数中将 'Something' 更改为 'Nothing'(或其他任何东西,显然),它是空的。然后,您可以根据要过滤的内容更改 lambda 函数。(编辑 - 基于现在有问题的示例 - 添加:df.apply(lambda x : True)到您的代码末尾以获得您正在寻找的答案。)(编辑 2 - 来自新的最小示例:import pandas as pdd = {'col1': [1, 2], 'col2': [3, 4]}df = pd.DataFrame(data=d)df.apply(lambda x : True, axis=1)输出是:0    True1    Truedtype: bool它没有像您的示例中那样说明名称和 dtype,但据我所知,这是如何实现的。(最终编辑(希望:))df.col1.apply(lambda x : True)输出我认为您正在寻找的答案。)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python