为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梦里花落0921 2021-10-19 15:10:20
让我们假设我需要一个过滤器的“起始桥”。如何将列中所有值的布尔索引设为“真”?最小示例:-> 显而易见。如果我有一个形状为 (2, 2) 的 df,我想得到一个 (2,1) = True 的布尔索引。当然,2 行是可变的,列数也是可变的。import pandas as pdd = {'col1': [1, 2], 'col2': [3, 4]}df = pd.DataFrame(data=d)现在我有一个像“col1 中的值需要为 1”这样的条件,所以我这样做:boolean_index = df.loc[:,'col1']==1返回0     True1    FalseName: col1, dtype: bool但我想要的是不指定任何条件(例如不指定 boolean_index = df.loc[:,'col1'] ==1)并返回0     True1     TrueName: col1, dtype: bool我可能只是愚蠢到想不通?还是没人问这个问题?
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

不完全清楚您在追求什么,但要获得可以过滤的 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 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)

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


查看完整回答
反对 回复 2021-10-19
  • 1 回答
  • 0 关注
  • 330 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信