获取数据框列中特定值之前的值

时间:2018-09-06 15:00:12

标签: python pandas

我有一个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 :(得分:3)

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

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

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

答案 1 :(得分:2)

使用理解力

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

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

答案 2 :(得分:2)

使用numpy.where

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

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

答案 3 :(得分:1)

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

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