Получить значение, предшествующее определенному значению в столбце данных - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть DataFrame, который выглядит примерно так:

import numpy as np
import pandas as pd

df=pd.DataFrame([['d',5,6],['a',6,6],['index',5,8],['b',3,1],['b',5,6],['index',6,7],
                ['e',2,3],['c',5,6],['index',5,8]],columns=['A','B','C'])

Тогда df это:

         A  B  C
  0      d  5  6
  1      a  6  6
  2  index  5  8
  3      b  3  1
  4      b  5  6
  5  index  6  7
  6      e  2  3
  7      c  5  6
  8  index  5  8

выберите элемент над (предшествующим) элементом 'index'. Я хочу получить массив как

 output=[a,b,c]

Ответы [ 4 ]

0 голосов
/ 06 сентября 2018

Вычтите 1 из индексов, где встречается значение 'index':

df.loc[df[df['A'] == 'index'].index - 1, 'A'].tolist()
0 голосов
/ 06 сентября 2018

Используя понимание

a = df.A.values
[x for x, y in zip(a, a[1:]) if y == 'index']

['a', 'b', 'c']
0 голосов
/ 06 сентября 2018

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

a = df.A.values
a[np.where(a[1:]=='index')].tolist()

['a', 'b', 'c']
0 голосов
/ 06 сентября 2018

Если я правильно понимаю, попробуйте использовать shift, затем loc, чтобы найти, где 'index' находится в столбце A:

df.shift().loc[df.A=='index','A'].tolist()

['a', 'b', 'c']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...