我需要在给定条件下计算一些概率,因此我正在使用一个函数来获取包含给定值的行,例如:
df:
col1 col2 col3
A B C
H B C
A B
A H C
Run Code Online (Sandbox Code Playgroud)
这是功能
def existence(x):
return df[df.isin([x]).any(1)]
Run Code Online (Sandbox Code Playgroud)
因此,如果我这样做:
in:
existence('A')
out:
col1 col2 col3
A B C
A B
A H C
Run Code Online (Sandbox Code Playgroud)
我需要对该函数进行一般化,以便可以给它提供多个参数并执行以下操作:
existence(x, y):
return df[df.isin([x]).any(1) & df.isin([y]).any(1)]
Run Code Online (Sandbox Code Playgroud)
或广义
existence(x1, x2,..., xn):
return df[df.isin([x1]).any(1) & df.isin([x2]).any(1) & ... & df.isin([xn]).any(1)]
Run Code Online (Sandbox Code Playgroud)
我认为args无法帮助我,因为我无法将运算符与运算符&
预先谢谢你的估计
您的函数已经可以使用可变数量的参数。查看以下说明pd.DataFrame.isin:
DataFrame.isin(values)DataFrame中的每个元素是否包含在值中。
这可以在多个参数上很好地工作,您只需要更改将参数传递到函数中的方式即可。这就是*argsPython中的用途。它允许您传递可变数量的参数,并给您返回tuple。
我还更新了您的函数,以将Datamask应用于其上,因为依赖于全局变量名称不是一个好习惯。
def existence(df, *args):
return df[df.isin(args).any(1)]
Run Code Online (Sandbox Code Playgroud)
In [13]: existence(df, 'A')
Out[13]:
col1 col2 col3
0 A B C
2 A B None
3 A H C
In [14]: existence(df, 'C', 'H')
Out[14]:
col1 col2 col3
0 A B C
1 H B C
3 A H C
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |