在 pandas 系列 python 中查找字符串
find string in pandas series python
我不知道如何在 pandas 系列中找到字符串:
mydata = np.array(['ab','ac','ad','ae'])
myserie = pd.Series(mydata) # this is because I don't know how to initialise a series directly ... :(
我正在寻找字符串 ac
的索引。
我试过 myserie.str.find('ac')
但是 returns
Out[270]:
0 -1
1 -1
2 -1
3 -1
dtype: int64
这有两个问题:我只想要 ac
字符串的索引(结果是 1),而且它没有发现它……我做错了什么?什么会起作用?
使用 Series.str.contains
作为测试子串:
idx = myserie.index[myserie.str.contains('ac')]
如果需要完全匹配使用==
或Series.eq
:
idx = myserie.index[myserie.eq('ac')]
print (idx)
Int64Index([1], dtype='int64')
对于标量,使用 next
和 iter
技巧,如果不匹配,return 值也是如此:
out = next(iter(idx), 'no match')
print (out)
1
我不知道如何在 pandas 系列中找到字符串:
mydata = np.array(['ab','ac','ad','ae'])
myserie = pd.Series(mydata) # this is because I don't know how to initialise a series directly ... :(
我正在寻找字符串 ac
的索引。
我试过 myserie.str.find('ac')
但是 returns
Out[270]:
0 -1
1 -1
2 -1
3 -1
dtype: int64
这有两个问题:我只想要 ac
字符串的索引(结果是 1),而且它没有发现它……我做错了什么?什么会起作用?
使用 Series.str.contains
作为测试子串:
idx = myserie.index[myserie.str.contains('ac')]
如果需要完全匹配使用==
或Series.eq
:
idx = myserie.index[myserie.eq('ac')]
print (idx)
Int64Index([1], dtype='int64')
对于标量,使用 next
和 iter
技巧,如果不匹配,return 值也是如此:
out = next(iter(idx), 'no match')
print (out)
1