根据列表条件在DataFrame中创建新列

时间:2018-09-10 22:37:32

标签: python pandas list conditional

我有一个类似的DataFrame:

df = pd.DataFrame({'A' : (1,2,3), 'B': ([0,1],[3,4],[6,0])})

我想创建一个名为test的新列,如果B列的每个列表中都存在0,则显示1。结果希望如下所示:

df = pd.DataFrame({'A' : (1,2,3), 'B': ([0,1],[3,4],[6,0]), 'test': (1,0,1)})

对于包含字符串而不是列表的数据框,我使用以下内容从字符串值创建了其他列

df.loc[df['B'].str.contains(0),'test']=1

当我使用示例df尝试此操作时,我会生成

TypeError: first argument must be string or compiled pattern

我还尝试将列表转换为字符串,但仅保留列表中的第一个整数。我怀疑我需要其他东西来访问列表中的元素,但不知道该怎么做。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这应该为您做到:

df['test'] = pd.np.where(df['B'].apply(lambda x: 0 in x), 1, 0)

相关问题