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

时间:2019-01-22 20:57:51

标签: python pandas list-comprehension

以下是数据框示例:

...
import { LoginComponent } from './login/login.component';
...
describe('AppComponent', () => {
  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        ...
      ],
      declarations: [
        AppComponent,
        LoginComponent
      ],
    }).compileComponents();
  ...

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

apple

我的第一个想法是使用以下代码,但出现语法错误:

id  lists             flag
1   ['dog', 'apple']  1
2   ['apple', 'cat']  1
3   ['pig', 'love']   0
4   ['help', 'out']   0

1 个答案:

答案 0 :(得分:-1)

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

df["lists"].apply(lambda x: 1 if "apple" in x else 0)

如果苹果在列表中,则使用三元运算符返回1,否则返回0

或者如@Vaishali的评论中所述,您可以使用更简单的lambda并进行类型转换:

df["lists"].apply(lambda x: "apple" in x).astype(int)

这里的lambda返回一个布尔序列,当转换为整数时,该布尔序列将转换为1s和0s