如何在Python中清理数据框行

时间:2019-09-19 18:54:49

标签: python pandas numpy dataframe

我在数据框中有一行

names
------
*OP Under A Blood Red Moon
125-201 1006
Apple
Orange
/
1-2-3

我想清理一下,就可以

names
------
Apple
Orange

我想删除 *OP Under A Blood Red Moon,因为它包含三个以上的单词。

删除125-201 10061-2-3,因为它们只有数字和符号。

删除/,因为它少于一个字符。

我有点熟悉如何在python中为字符串执行某些操作,但是如何在pandas数据帧中的整个行中执行此操作。

1 个答案:

答案 0 :(得分:1)

我们不会删除行,而是过滤它们并保留所有符合以下条件的行:

  • 最多3个单词(即不超过2个空格) AND
  • 至少包含一个字母字符 AND
  • 长度超过1个字符

具有以下布尔索引:

def num_alpha(s):
    return len([c for c in s if c.isalpha()])

df[(df.names.str.count(' ') < 3) & (df.names.apply(num_alpha) > 0) & (df.names.str.len() > 1)]

这个条件,尤其是第一个条件,当然仍然可以改进,但是我想你明白了。

请注意,在熊猫中进行元素逻辑运算时,必须使用括号,请参见boolean indexing