ambda函数检查值是否在列表中-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

ambda函数检查值是否在列表中

一码平川MACHEL 2019-01-23 16:13:39 928

这是一个示例Dataframe:

id lists
1 ['dog', 'apple']
2 ['apple', 'cat']
3 ['pig', 'love']
4 ['help', 'out']
现在,我想apple在列表列表中使用lambda函数创建另一列。

id lists flag
1 ['dog', 'apple'] 1
2 ['apple', 'cat'] 1
3 ['pig', 'love'] 0
4 ['help', 'out'] 0
我的第一个想法是使用以下代码,但我收到语法错误:

df.apply(lambda x: [1 if "apple" in i for i in x])

分享到
取消 提交回答
全部回答(2)
  • 客官来玩啊
    2019-07-17 23:26:42

    df.apply(lambda x: [1 if "apple" in i for i in x])
    语法错误的原因是少了 else语句
    语法正确的写法应该是:
    df.apply(lambda x: [1 if "apple" in i else 0 for i in x])
    但是这样写也是不符合你的语意的

    可以参考上面答案或着如下
    [ 1 if "apple" in i else 0 for i in df['lists'] ]

    0 0
  • 一码平川MACHEL
    2019-07-17 23:26:42

    可以稍微修改您的代码并获得所需的结果,如下所示:

    df["lists"].apply(lambda x: 1 if "apple" in x else 0)
    如果apple在列表中,则使用三元运算符返回1,如果不在,则使用0返回0

    或者可以使用更简单的lambda并进行类型转换:

    df["lists"].apply(lambda x: "apple" in x).astype(int)
    这里的lambda返回一个布尔系列,然后在转换为整数时转换为1和0

    0 0
添加回答
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章