Python 获取dataframe列中特定值之前的值

Python 获取dataframe列中特定值之前的值,python,pandas,Python,Pandas,我有一个数据帧,看起来像这样: 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

我有一个
数据帧
,看起来像这样:

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]

如果我理解正确,请尝试使用
shift
,然后使用
loc
查找
'index'
A列中的位置:

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

['a', 'b', 'c']
运用理解力

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

['a', 'b', 'c']

使用
numpy.where

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


从出现值
'index'
的索引中减去
1

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

这个问题不是很清楚。请澄清?我不明白……这是假设
索引
是数字且顺序有序。@piRSquared好点(所有其他答案都已被采纳:)
df.loc[df[df['A'] == 'index'].index - 1, 'A'].tolist()