2014-11-17 45 views
1

從這樣的數據集中,我需要找到A的最接近的先前索引。數據幀可能很大,但它總是必須找到最後一個先前的索引,其中第二個列等於「A」。使用條件語句在數據框中找到先前的最大索引

index X 
1  A 
2  B 
3  C 
4  D 
5  E 
6  A 
7  B 
8  C 
9  D 
10 E 

這是我期望實現的輸出。與「A」相關的最近的指數

index X Y 
1  A 1 
2  B 1 
3  C 1 
4  D 1 
5  E 1 
6  A 6 
7  B 6 
8  C 6 
9  D 6 
10 E 6 

類似這樣的東西。

for i in x: 
     max(if df[i][1] == 'A' and df[0] < df[i][0]]) 

回答

1

您可以提取索引列,其中X是 'A' 使用其中:

In [11]: df['index'].where(df['X'] == 'A') 
Out[11]: 
0  1 
1 NaN 
2 NaN 
3 NaN 
4 NaN 
5  6 
6 NaN 
7 NaN 
8 NaN 
9 NaN 
Name: index, dtype: float64 

看起來你只是想ffill此:

In [12]: df['index'].where(df['X'] == 'A').ffill() 
Out[12]: 
0 1 
1 1 
2 1 
3 1 
4 1 
5 6 
6 6 
7 6 
8 6 
9 6 
Name: index, dtype: float64 

和將其設置爲Y欄爲您提供了期望的結果:

In [13]: df['Y'] = df['index'].where(df['X'] == 'A').ffill() 
相關問題