通过布尔函数过滤 pandas 数据框

Filter a pandas dataframe by a boolean function

我需要仅对一列字符串使用函数来过滤 pandas 数据框。

这里是一个数据帧的例子:

  ID  Titles    Values
0  1  title1   value1
1  2  title2   value2
2  3  title3   value3
...

我有一个复杂的功能:

def checkTitle(title:str) -> bool :
    ...

我想在标题列上用这个函数过滤第一个数据帧,只有函数发送 True 的行。

我尝试了类似的方法,但它 return 没有任何用处:

df = df.apply(checkTitle(df["Titles"]),axis=1)

你能帮忙吗?

您可以将该函数仅应用于数据框的一列,然后将生成的布尔系列用于 select 行:

select = df.Titles.apply(checkTitle)
df = df.loc[select, :]

我认为这可能是适合您的解决方案。

def checkTitle(title:str) -> bool:
    if title == 'title2':
        return True
    else:
        return False

df = pd.DataFrame({'ID': [1, 2, 3, 4], 'Titles': ['title1', 'title2', 'title2', 'title3'], 'Values': ['value1', 'value2', 'value2', 'value3']})

mask = df.Titles.apply(checkTitle)
df[mask]

我不详细了解你的功能,但你需要 return 两个 bool 值 True|False 来切片数据帧。

我希望这个解决方案对您有所帮助

此致,