【发布时间】:2026-01-11 18:30:01
【问题描述】:
这是一个示例数据框:
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])
【问题讨论】:
-
如果苹果不在i中,值应该是多少?
-
@jonrsharpe 我猜是 0,来自 MWE。虽然这应该在问题中明确说明。
-
您使 LC 复杂化,只需使用 df['lists'].apply(lambda x: 'apple' in x).astype(int)
-
@coldspeed 我的意思更多的是语法错误所问的问题。
-
这里不推荐使用
apply。如果您正在处理字符串或混合/可变数据类型,请改用列表推导。请参阅this post 了解更多信息。
标签: python pandas list-comprehension