我想从payment_type列中过滤出值“ UNK”并返回完整的数据框。我想使用匿名函数。我收到类型错误。
我尝试创建一个单独的函数,但仍然无法使其正常工作。我正在Jupyter Notebooks上运行它
paymentGroups = fareData.groupby("payment_type")
filteredPaymentTypes = paymentGroups.filter(lambda x:
x["payment_type"].values != 'UNK')
我收到此错误:
TypeError: filter function returned a ndarray, but expected a scalar bool
所需结果是修改后的数据框,在payment_type列中不包含包含“ UNK”的行。
答案 0 :(得分:0)
当选择条件与某些条件相关时,需要使用groupby
进行过滤
整个组的属性,例如某列的平均值(在
当前组)> some_value 。
但是在您的情况下,选择标准与
当前记录(不在该组中),因此不需要分组。
请改用query
,例如:
fareData.query("payment_type != 'UNK'")
如果出于某些原因您仍要使用分组,请注意在这种情况下
过滤位于分组键(payment_type
)上,该键相同
在当前组的每一行中。
因此,筛选条件只能在 当前组的第一行:
paymentGroups.filter(lambda x: x['payment_type'].iloc[0] != 'UNK')
答案 1 :(得分:0)
为什么不使用简单的mask
过滤掉组前的值?
mask = fareData.payment_type != 'UNK'
fareData = fareData[mask]