Python 从数据框中删除包含字符列表之外的字符的行

Python 从数据框中删除包含字符列表之外的字符的行,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试从panda数据框中删除列表中未包含的所有行 allowed_chars = list(ascii_lowercase) data = df[df['Value'].apply(lambda x : x in allowed_chars)] print(data.Value.tolist()) 打印只打印“False”值的列表。您的格式似乎很好,我唯一能想到的是,该值的格式可能不适合中的测试。您可能需要在data=line中执行str(x)或类似操作。如果你能给出一段ascii_小写

我正在尝试从panda数据框中删除列表中未包含的所有行

allowed_chars = list(ascii_lowercase)
data = df[df['Value'].apply(lambda x : x in allowed_chars)]
print(data.Value.tolist())

打印只打印“False”值的列表。

您的格式似乎很好,我唯一能想到的是,该值的格式可能不适合中的测试。您可能需要在data=line中执行str(x)或类似操作。如果你能给出一段ascii_小写字母和数据,我可以看得更远

df2
#   a  b  c
#0  x  2  3
#1  y  2  4

df2[df2.a.apply(lambda x: x in 'x')] 
#   a  b  c
#0  x  2  3

您要做的是将存储在值列中的整个字符串与您允许的字符列表进行比较,这不起作用,因为您的字符列表只包含一个字符串,而该字符串与值列中的任何单词都不匹配。这是你可以做的

allowed_chars = set('abcde...')
data = df[df['Value'].apply(lambda x: set(x).issubset(allowed_chars))]
print(data.Value.tolist())

这会删除整行,对吗?不仅仅是列中的行?@user8714896是的,您实际上是在使用Value列上的apply语句构建所谓的布尔掩码,然后将该掩码应用于整个数据帧。