删除pandas中的某些特定行

时间:2016-08-11 07:01:46

标签: python-2.7 pandas dataframe

我想删除pandas dataframe中的一些行。

ID                Value

2012XY000         1
2012XY001         1
.                 
.
.
2015AB000         4
2015PQ001         5
.
.
.
2016DF00G         2

我想删除ID不以2015开头的行。 我该怎么办?

2 个答案:

答案 0 :(得分:2)

startswith使用boolean indexing

print (df.ID.str.startswith('2015'))
0    False
1    False
2     True
3     True
4    False
Name: ID, dtype: bool

print (df[df.ID.str.startswith('2015')])
          ID  Value
2  2015AB000      4
3  2015PQ001      5

通过评论编辑:

print (df)
          ID  Value
0  2012XY000      1
1  2012XY001      1
2  2015AB000      4
3  2015PQ001      5
4  2015XQ001      5
5  2016DF00G      2

print ((df.ID.str.startswith('2015')) & (df.ID.str[4] != 'X'))
0    False
1    False
2     True
3     True
4    False
5    False
Name: ID, dtype: bool

print (df[(df.ID.str.startswith('2015')) & (df.ID.str[4] != 'X')])
          ID  Value
2  2015AB000      4
3  2015PQ001      5

答案 1 :(得分:0)

str.match与正则表达式字符串r'^2015'一起使用:

df[df.ID.str.match(r'^2015')]

enter image description here

要排除之后有X的人。

df[df.ID.str.match(r'^2015[^X]')]

正则表达式r'^2015[^X]'转换为

  • ^2015 - 必须以2015
  • 开头
  • [^X] - 2015之后的字符不得为X

考虑df

enter image description here

然后

df[df.ID.str.match(r'^2015[^X]')]

enter image description here