如何解决列表的布尔掩码,作为pandas数据框中的条目
我有一个熊猫DataFrame,其中包含列表作为条目
df[df['col1'] == 'foo']
然后,我想使用布尔型掩码返回行,如果'foo'在任何行的列表中(在本例中为第0行)。以下将返回一个空的DataFrame:
df[df['col1'].apply(lambda x: True if 'foo' in x else False)]
实现上述目标的最佳方法如下:
this.itemsList = this.itemsRefList.snapshotChanges().pipe(
map(changes =>
changes.map(c => ({
product: c.payload.key,firmware: c.payload.child('latest').val(),ref: c.payload.ref,})
)
)
);
但是我觉得有一种方法可以简化这段代码。有什么建议吗?
解决方法
正如Henry在评论中所发布的,如果您在lambda中使用'foo' in x
,则可以缩小代码。
对我来说,这看起来足够pythonic。
完整的行将是
df[df["col1"].apply(lambda x: 'foo' in x)]
如果要避免使用lambda表达式,可以使用:
def inside(my_list,key): return key in my_list
out = df[df["col1"].apply(inside,key="foo")]
这使用了预先定义的功能,可以对其进行扩展。对于lambda表达式,这是不可能的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。