我有一个看起来像这样的数据框:
Name Fruits
1 Bob Apple,Banana
2 Sam Apple,Orange
3 George Banana,Kiwi,Cherry
和另一个看起来像这样的列表:
Allowed_fruits = [Apple,Banana]
我正试图编写一个测试来检查Fruits
列中所有元素是否在allowed_fruits
列表中。
否则-应该将它们插入另一个数据框。
输出应为:
Found Not allowed Fruits !
Name Fruits
2 Sam Orange
3 George Kiwi,Cherry
有什么想法吗?
答案 0 :(得分:3)
将DataFrame.assign
用于新的DataFrame,并在生成器理解中使用带分隔值的测试:
Allowed_fruits = ['Apple','Banana']
f = lambda x: ','.join(y for y in x.split(',') if y not in Allowed_fruits)
df1 = df.assign(Fruits = df['Fruits'].apply(f))
或者:
L = [','.join(y for y in x.split(',') if y not in Allowed_fruits) for x in df['Fruits']]
df1 = df.assign(Fruits = L)
最后删除没有值的行,与空字符串进行比较
df1 = df1[df1['Fruits'].ne('')]
print (df1)
Name Fruits
2 Sam Orange
3 George Kiwi,Cherry