2016-07-04 2 views
3

Как получить следующее значение в колонке после строка соответствует?Pandas: Получить следующее значение в столбце после соответствия строки

regex = 'ABC' 
row_match = df["column1"].str.match(regex, case=False) 

I.e. как получить значение в следующей строке в том же столбце, после того, как строка ABC может быть найдена?

Я пробовал перебирать один ряд с iterrows, но я не смог заставить его работать.

ответ

4

Вы можете использовать shift, чтобы получить следующее значение.

Вот небольшой пример:

>>> import pandas as pd 
>>> data = ['a', 'b', 'c', 'd', 'c', 'e'] 
>>> df = pd.DataFrame(data) 
>>> df 
    0 
0 a 
1 b 
2 c 
3 d 
4 c 
5 e 
>>> df[df[0].str.match('c').shift(1).fillna(False)] 
    0 
3 d 
5 e 

Я использую fillna заменить NaN в первом ряду.

+0

Спасибо - но я прав в своей интерпретации, что это сдвигает * все * значения индекса в DataFrame? Я хотел бы сохранить DataFrame неповрежденным как есть, получая следующее значение в том же столбце. – Winterflags

+1

Поскольку я называю 'shift' на' df [0] .str.match ('c') ', единственными значениями, которые фактически смещены, являются булевы, соответствующие результату' match'. Сам DataFrame остается неизменным. Попробуйте ввести 'df [0] .str.match ('c')' и 'df [0] .str.match ('c'). Shift (1)' в подсказке, чтобы понять поведение. – 3kt

Смежные вопросы