Как найти значение строки другого столбца (column2), если мое значение строки находится в том же столбце (column1) в другой строке - PullRequest
1 голос
/ 26 апреля 2019

У меня есть DataFrame, как это:

month       CPT
5/1/2017    aa
5/1/2017    bb
5/1/2017    cc
6/1/2017    aa
6/1/2017    cc
6/1/2017    dd
7/1/2017    aa
7/1/2017    bb
7/1/2017    cc

Мне нужен новый столбец (old_bill), в котором мне нужны значения столбца (месяца) после наличия значения строки столбца (CPT) в начале в том же столбце (CPT). Ожидаемый фрейм данных:

period      CPT old_bill
5/1/2017    aa  nan
5/1/2017    bb  nan
5/1/2017    cc  nan
6/1/2017    aa  5/1/2017
6/1/2017    cc  5/1/2017
6/1/2017    dd  nan
7/1/2017    aa  6/1/2017
7/1/2017    bb  5/1/2017
7/1/2017    cc  6/1/2017

Я пробовал методом .isin. Но я не получил впечатляющие результаты. Заранее большое спасибо ....

1 Ответ

1 голос
/ 26 апреля 2019

Я полагаю, вам нужно DataFrameGroupBy.shift - только необходимые последовательные даты и время для групп:

df['old_bill'] = df.groupby('CPT')['month'].shift()
print (df)
      month CPT  old_bill
0  5/1/2017  aa       NaN
1  5/1/2017  bb       NaN
2  5/1/2017  cc       NaN
3  6/1/2017  aa  5/1/2017
4  6/1/2017  cc  5/1/2017
5  6/1/2017  dd       NaN
6  7/1/2017  aa  6/1/2017
7  7/1/2017  bb  5/1/2017
8  7/1/2017  cc  6/1/2017
...