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

标签 python pandas list conditional-statements

我有一个像这样的数据框:

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

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

最佳答案

这应该适合你:

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

关于python - 根据列表的条件在 DataFrame 中创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52266397/

相关文章:

python - 如何对其中包含符号的数组进行排序和分组?

python - python中的Lua解析器

python - 如何根据其他列中的数据替换 python pandas 中的行与行之间的某些值?

java - java如何组合列表对象?

python - Selenium - 将文件上传到 iframe

python - 仅运行 python 脚本的 Eclipse 插件

Python Pandas 绘制由 secondary_y 更改的图层顺序

python - 使用 pd.melt 将列转换为两个单独的可变值列

python - 如何简单地覆盖被替换元素的列表

python - 优化涉及多个元组求和的复杂列表操作(在 python 中)