【发布时间】:2021-03-31 04:03:15
【问题描述】:
我正在根据一个或多个条件过滤熊猫数据框,如下所示:
def filter_dataframe(dataframe, position=None, team_id=None, home=None, window=None, min_games=0):
df = dataframe.copy()
if position:
df = df[df['position_id'] == position]
if clube_id:
df = df[df['team_id'] == team_id]
if home:
if home == 'home':
df = df[df['home_dummy'] == 1.0]
elif home == 'away':
df = df[df['home_dummy'] == 0.0]
if window:
df = df[df['round_id'].between(1, window)]
if min_games:
df = df[df['games_num'] >= min_games]
return df
但我不认为这很优雅。
有没有更简单的方法可以达到同样的效果?
我想为SO answer 中的条件创建规则,然后使用any(rules) 方法来应用过滤(如果有),但我不知道如何处理。有什么想法吗?
【问题讨论】:
-
可能更适合代码审查?
-
您可以尝试将列名和参数值传递给过滤器而不是所有参数吗?
-
是的,可以这样做
标签: python pandas dataframe if-statement