熊猫-如果条件与lambda

时间:2020-05-16 00:56:52

标签: python pandas lambda

这有效:

C = df_temp['For Team'].map(
            lambda x: df_teams.loc[df_teams['CommentName']==x,'TeamColor'].item())

但是我想为lambda中x在另一个列表“ y”中添加一个条件,就像这样:

y = ['salah', 'zico', 'pele']

我尝试过:

lambda x: df_teams.loc[df_teams['CommentName']==x if x in y,'TeamColor'].item())

但这会引发无效的语法。

我该怎么做?

3 个答案:

答案 0 :(得分:1)

让我们尝试isin

df_teams.loc[df_teams['CommentName'].isin(y),'TeamColor'].item()

答案 1 :(得分:0)

这应该有效:

C = df_temp['For Team'].map(lambda x: df_teams.loc[df_teams['CommentName']==x and x in y,'TeamColor'].item())

您需要使用“和”将两个条件连接起来,而不是添加if语句。

希望对您有帮助。

答案 2 :(得分:0)

您始终可以先创建一个命名函数,然后将其应用于lambda。

y = ["salah", "zico", "pele"]


def get_teamcolor(x, y):
    if x in y:
        return df_teams.loc[df_teams["CommentName"] == x, "TeamColor"].item()


C = df_temp["For Team"].map(lambda x: get_teamcolor(x, y))