让我们假设我需要一个过滤器的“起始桥”。如何将列中所有值的布尔索引设为“真”?最小示例:-> 显而易见。如果我有一个形状为 (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)
输出我认为您正在寻找的答案。)
添加回答
举报
0/150
提交
取消