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。
我正在尝试使用 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。