如何在切片复杂条件下提取行

时间:2017-06-27 09:20:54

标签: python pandas dataframe

我有数据框(系列),如下所示

12a 3
4 b5
6 b7c
9 c1d

我想提取包含字母'b'(开头位置= 3,在文本中)

的行
4 b5
6 b7c

如何在pandas数据框中提取这些行?

1 个答案:

答案 0 :(得分:1)

您可以indexing with str使用str.containsboolean indexing

df = pd.DataFrame({'a':['12a 3','4 b5','6 b7c','9 c1d']})
print (df)
       a
0  12a 3
1   4 b5
2  6 b7c
3  9 c1d

df1 = df[df['a'].str[2:].str.contains('b')]
print (df1)
       a
1   4 b5
2  6 b7c

如果需要只检查第3个字母:

df1 = df[df['a'].str[2] == 'b']
print (df1)
       a
1   4 b5
2  6 b7c

对于多个值,可以使用:

df1 = df[df['a'].str[2:].str.contains('[ab]')]
print (df1)
       a
0  12a 3
1   4 b5
2  6 b7c

并查看第3版:

df1 = df[df['a'].str[2].isin(['a','b'])]
print (df1)
       a
0  12a 3
1   4 b5
2  6 b7c
df1 = df[df['a'].str[2].isin(list('ab'))]
print (df1)
       a
0  12a 3
1   4 b5
2  6 b7c