Получить строку с символом после определенного индекса - PullRequest
1 голос
/ 11 октября 2019

У меня есть df:

Index col1
1     Abc
2     xyz
3     $123
4     wer
5     exr
6     ert
7     $546
8     $456

Постановка задачи :

Теперь я хочу найти индекс строки, содержащей знак доллара послеключевое слово wer.

Мой код:

idx = df.col1.str.contains('\$').idxmax() ## this gives me index 3 but what i want is index 7

Помогите изменить мой код, чтобы получить желаемый результат

Ответы [ 2 ]

1 голос
/ 11 октября 2019

Вам нужно также замаскировать wer

s = (df['col1'].str.contains('\$')           # rows containing $
     & df['col1'].eq('wer').cumsum().gt(0)   # rows after the first 'wer'
    ).idxmax()
# s == 7
1 голос
/ 11 октября 2019

Использование:

#df=df.set_index('Index') #if 'index' is a column
df2=df[df['col1'].eq('wer').cumsum()>0]
df2['col1'].str.contains('\$').idxmax()

или:

df[(df['col1'].eq('wer').cumsum()>0) & df['col1'].str.contains('\$')].index[0]

Выход:

7

Подробности:

df['col1'].eq('wer').cumsum().eq(1)
Index
1    False
2    False
3    False
4     True
5     True
6     True
7     True
8     True
Name: col1, dtype: bool

print(df2)
       col1
Index      
4       wer
5       exr
6       ert
7      $546
8      $456
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...