Python 如果列表1中的任何值在df[';1';]中,则返回False,否则返回True

Python 如果列表1中的任何值在df[';1';]中,则返回False,否则返回True,python,Python,我做了一个for循环,说“如果非_链中的任何值都在df['DBA'],那么返回False,否则返回True”。non_chain是一个餐厅名称列表,df['DBA']是一列餐厅名称。这个循环会让我知道这家餐厅是否是连锁店 我将把这个新创建的列表“o”从for循环转换为df中的一列 问题:它返回的都是False,我不知道为什么 o = [] for x in df['DBA']: if any(n in x for n in non_chain): o.append(Fal

我做了一个for循环,说“如果非_链中的任何值都在df['DBA'],那么返回False,否则返回True”。non_chain是一个餐厅名称列表,df['DBA']是一列餐厅名称。这个循环会让我知道这家餐厅是否是连锁店

我将把这个新创建的列表“o”从for循环转换为df中的一列

问题:它返回的都是False,我不知道为什么

o = []
for x in df['DBA']:
    if any(n in x for n in non_chain):
        o.append(False)
    else:
        o.append(True)
print(o)

您可以使用
grepl

library(data.table)
df <- data.table(X = c("A","C","G","G","X"))
non_chain <- c('X', 'C')

check_available <- function(i, lst){
    return(any(grepl(i, x = non_chain)))
}

df[, flag := lapply(X, function(x) check_available(x, non_chain))]
print(df)

   X  flag
1: A FALSE
2: C  TRUE
3: G FALSE
4: G FALSE
5: X  TRUE
库(data.table)

df您描述的问题似乎应该用更简单的方法解决

o = [name not in non_chains for name in df["DBA"]]

n
x
都是Python中的字符串时,x中的
n
表示子字符串包含

您看过一些关于R语法的教程了吗?这是一个很好的开始。你确定这是R代码吗?它看起来更像python。确保你正确地标记了问题。如果您包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,那么就更容易帮助您。omg,我的意思是放置python标记。Apolgoies,我一直在用两种语言工作。