首页 > 解决方案 > 在多个 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 函数(如果有)组合条件的正确方法是什么。

谢谢!

标签: pythonpandasdataframe

解决方案


尝试分别分配两个变量,即。new_df = df.loc[_M] new_df = df.loc[_F] 希望这会有所帮助.......


推荐阅读