[英]Python Pandas : filter a dataframe based on boolean pandas series
[英]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.