Lambda 表达式 && python

Lambda expression with && python

我正在尝试使用 lambda 表达式来提取具有两个条件的日期。 当我写这个的时候它有效

newdf.loc[lambda newdf: newdf['yearly_premium'] > 2784, :]

但是当我添加另一个条件时它没有:/

newdf.loc[lambda newdf: newdf['yearly_premium'] > 2784 and newdf['Total_Claim_Amount'] < 1021.654, :]

有人能告诉我如何调整吗?谢谢大家

lambda 函数传递给 DataFrame.loc 时,表达式的计算结果必须为布尔数组。可以使用布尔运算符在单个表达式中指定多个条件,以便整个表达式的计算也是一个布尔数组,例如:

lambda newdf: (newdf['yearly_premium'] > 2784) & (newdf['Total_Claim_Amount'] < 1021.654)

请注意,每个条件都包含在括号中。这是因为默认的 Python 评估顺序不会产生您期望的结果。

例子

import pandas as pd

df = pd.DataFrame({'x': [1, 2, 3], 'y': [3, 4, 5]})
newdf = df.loc[lambda df: (df['x'] > 1) & (df['y'] < 5)]

print(df)
print(newdf)

输出

   x  y
0  1  3
1  2  4
2  3  5

   x  y
1  2  4

使用注意事项lambda

值得注意的是,在此特定用例中不需要 lambda 函数。在前面的示例中,可以直接使用标签来实现相同的结果,例如:

newdf = df.loc[(df['x'] > 1) & (df['y'] < 5)]

有关其他文档,请参阅 Indexing and selecting data