Поиск последовательных пар строк в pandas DataFrame с сопоставлением значений в двух столбцах - PullRequest
0 голосов
/ 11 марта 2020

Учитывая DataFrame, как это:

n     name  number  time  
0     foo    0       .1
1     foo    3       .15
2     bar    0       .2
3     bar    2       .3
4     foo    1       .4
5     foo    5       .45
6     bar    3       .5
7     bar    4       .55
8     bar    5       .6
9     bar    1       .7

Сделать этот DataFrame:

n     name  number  time    n     name  number  time
0     foo    0       .1     2     bar    0       .2
1     foo    3       .15    6     bar    3       .5
4     foo    1       .4     9     bar    1       .7
5     foo    5       .45    8     bar    5       .6

Я взломал решение с использованием shift, который работает, если данные выглядят так:

n     name  number  time  
0     foo    0       .1
1     bar    0       .15
2     foo    1       .2
3     bar    2       .3
4     foo    3       .4
5     bar    5       .5

Но я не могу гарантировать, что исходные данные чередуются с 'foo' и 'bar.' Я должен быть в состоянии получить пары на любом расстоянии друг от друга.

1 Ответ

1 голос
/ 11 марта 2020

IIU C еще нужно groupby, затем concat

df=pd.concat([y.reset_index(drop=True).set_index('number') for x , y in df.groupby('name')],axis=1, join='inner').reset_index()
Out[322]: 
   number  n name  time  n name  time
0       0  2  bar   0.2  0  foo  0.10
1       3  6  bar   0.5  1  foo  0.15
2       5  8  bar   0.6  5  foo  0.45
3       1  9  bar   0.7  4  foo  0.40
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...