繁体   English   中英

通过布尔函数过滤熊猫数据框

[英]Filter a pandas dataframe by a boolean function

我只需要在字符串的一列上使用函数过滤熊猫数据框。

这是数据框的示例:

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

我有一个复杂的功能:

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

而且我想在列标题上使用此函数过滤第一个数据框,只有函数发送 True 的行。

我尝试了类似的东西,但它没有返回任何可用的东西:

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

你能帮忙吗?

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

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]

我不知道你的详细功能,但你需要返回两个布尔值 True|False 来切片数据帧。

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

问候,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM