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()