我有数据框(系列),如下所示
12a 3
4 b5
6 b7c
9 c1d
我想提取包含字母'b'(开头位置= 3,在文本中)
的行4 b5
6 b7c
如何在pandas数据框中提取这些行?
答案 0 :(得分:1)
您可以indexing with str
使用str.contains
和boolean 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