![](/img/trans.png)
[英]Efficient selection of rows in Pandas dataframe based on multiple conditions across columns
[英]Select rows based on same conditions across multiple Pandas DataFrames
我正在使用 Python 3.7,并且我正在尝试根据相同的条件从多个 Pandas DataFrame 中选择行。
特别是,假设我有一个 DataFrame,df,有两列 = ['Name', 'Gender'],而 'Gender' 列只能取三个值 'M'、'F'、'U'。
我的目标是选择性别等于“M”或“F”的行。 但是,我必须为具有相同列的多个数据帧进行此选择,因此我尝试使用 lambda 函数将条件存储在对象中,如下所示:
_M = (lambda x: x['Gender']=='M')
_F = (lambda x: x['Gender']=='F')
new_df = df.loc[_M | _F]
但是,它会引发以下异常:
"TypeError: unsupported operand type(s) for |: 'function' and 'function'"
因此我尝试替换'|' 对于“或”:
new_df = df.loc[_M or _F]
在这种情况下,我没有收到任何错误,但它仅根据 _M 条件选择行。
(请注意,我希望将 _M 和 _F 保留为单独的条件,因为我需要在稍后阶段分别处理具有 Gender=='M' 和 Gender='F' 的行。)
编辑:因此,我的问题是如何使用相同的条件以有效的方式从不同的 Pandas 数据帧中选择行。 更一般地说,我想知道使用 lambda 函数组合条件的正确方法是什么(如果有的话)。
谢谢!
请尝试以下操作。
df[(df['Gender'] == 'M') | (df['Gender'] == 'F')]
使用|
时,您需要记住在条件周围加上括号|
. 或者,如果保证值是'M', 'F', 'U'
,那么您可以尝试。
df[~df['Gender'] == 'U'] # This selects anything that isn't 'U'
尝试分别分配两个变量,即。 new_df = df.loc[_M] new_df = df.loc[_F] 希望这有帮助......
不是我问题的真正答案,但就我的目的而言,它有效。
我刚刚编辑了我的代码并添加了另一个条件,如下所示:
_M = (lambda x: x['Gender']=='M')
_F = (lambda x: x['Gender']=='F')
_MF = lambda x: (x['Gender']=='M') | (x['Gender']=='F')
new_df = df.loc[_MF]
这样我就有了我需要的东西。
不过,我想知道是否有一种方法可以概括条件组合以从多个数据帧中选择行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.