使用Apply Map从DF中删除不需要的短语(Pandas,Python 3)

时间:2014-09-29 20:35:16

标签: python-3.x pandas

现在,我有一个像这样的DF

Words               Words1
Little Red         Red Apple
Cracker Barrel     Wood Grain
Far Away Man       Flat Rate Shipping

我想根据特定条件从我的DF中删除单元格,其中某些单词不能同时出现在同一个短语中。

例如:从以下DF移除单元格,其中" Flat"与#34; Shipping"相同的短语和哪里"远"和#34; Man"在同一个短语中。我一直在玩这样的东西,但它不起作用......

Words.where(Words.applymap(lambda x: 'Flat' and 'Shipping' in x))

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你是什么意思"删除细胞"?我想你的意思是删除行吗?那么这将是一个apply,因为你会逐行考虑事情。

In [8]: def pred(x):
    c1 = ('Far' in x[0]) and ('Man' in x[0])
    c2 = ('Flat' in x[1]) and ('Shipping' in x[1])
   ...:     return c1 and c2

In [9]: df.apply(pred, axis=1)
Out[9]: 
0    False
1    False
2     True
dtype: bool

因此,您可以删除符合条件的行

In [10]: df[~df.apply(pred, axis=1)]
Out[10]: 
            Words      Words1
0      Little Red   Red Apple
1  Cracker Barrel  Wood Grain

str.match方法与正则表达式一起使用可能会更快。