我有一个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]
答案 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()