python - 带有可选条件的 Pandas 数据框过滤
问题描述
我有一个关于通过选项填充熊猫数据框的问题,如下所示:
请求:如果 'brand'=='All" 或 'lo' == 'All',将从过滤中排除。问题:我尝试如下处理但不起作用。请帮我修复代码。
def filter_for_company(df_source, season, brand, lo):
mask = (
(df_source['Production Priority'] == 'Primary')
& (df_source['Season'] == season)
& (if brand =='All':
pass
else:
df_source['Brand'] == brand
)
& (if lo ='All':
pass
else:
df_source['Liaison Office Code'] == lo
)
)
company_df = df_source.loc[mask,:]
return company_df
解决方案
pandas 数据帧的条件切片使用loc
或iloc
设计用于根据数据帧中实际存在的值进行过滤。您想要实现的目标应该由调用您的过滤函数的代码单独处理。
但是,如果您无法控制它,您可以修改您的函数,如下所示:
def filter_for_company(df_source, season, brand, lo):
mask = (
(df_source["Production Priority"] == "Primary")
& (df_source["season"] == season)
)
if brand != "All":
df_source = df_source[df_source["Brand"] == brand]
if lo != "All":
df_source = df_source[df_source["Liaison Office Code"] == lo]
company_df = df_source.loc[mask, :]
return company_df
推荐阅读
- android - 三星设备上缩放的画布 drawBitmap 上的模糊像素绘制
- c# - Blazor 在 X 量空闲时间后执行某些操作
- c# - StructureLayout 编译错误 System.TypeLoadException
- c - 调用 vfprintf 函数后出现分段错误(核心转储)
- javascript - 我希望在单击按钮时更改页面的 CSS
- deep-learning - 为什么/如何在转换为 tensorflow 2.0 数据集后更改图像数据集的尺寸
- javascript - 如何将 AJAX responseText 传递给变量
- spring-data-rest - Spring Data Rest 返回没有投影的子对象
- java - While循环中递减运算符的问题
- java - 耳机蓝牙超时,需要音频 ping