我正在尝试从熊猫数据框中删除所有不在列表中的行
allowed_chars = list(ascii_lowercase)
data = df[df['Value'].apply(lambda x : x in allowed_chars)]
print(data.Value.tolist())
打印仅打印“假”值列表。
答案 0 :(得分:1)
您正在做的是将“值”列中存储的整个字符串与允许的字符列表进行比较,这将不起作用,因为您的字符列表仅包含一个与您的任何字符都不匹配的字符串值列中的单词。这就是您可以做的。
allowed_chars = set('abcde...')
data = df[df['Value'].apply(lambda x: set(x).issubset(allowed_chars))]
print(data.Value.tolist())
答案 1 :(得分:0)
您的格式似乎很好,我唯一想到的是,可能值的格式不正确,无法进行测试。您可能需要在数据中执行str(x)或类似的操作=行。如果您可以提供ascii_lowercase和数据的摘要,则可以进一步查找。
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