Как выбрать n строк, предшествующих строке индекса в DataFrame? - PullRequest
1 голос
/ 30 марта 2019

У меня есть DataFrame, и я пытаюсь выбрать строку (с учетом определенного индекса) и n строк, предшествующих ему.

Я пробовал что-то вроде:

last_10 = self.market_data.iloc[index:-10]

Но это, кажется, дает все от index до конца кадра данных минус 10 строк.

Я хотел бы получить строку, указанную index, и 10 строк, предшествующих ему

Ответы [ 2 ]

2 голосов
/ 30 марта 2019

Используйте это:

n = 10
last_10 = self.market_data.iloc[index-n:index+1]

При нарезке массивов Python возвращает все до последнего индекса, поэтому вам нужно добавить один, чтобы включить его.

1 голос
/ 30 марта 2019

Если общий индекс похож на DatetimeIndex, используйте DataFrame.iloc с Index.get_loc для позиции val:

print (market_data)
            val
Date           
1900-01-01  2.0
1900-01-02  3.0
1900-01-03  5.1
1900-01-04  5.0
1900-01-05  6.0
1900-01-06  7.0
1900-01-07  3.0

n = 3
val = '1900-01-04'
pos = market_data.index.get_loc(val)
last_10 = market_data.iloc[pos-n+1:pos+1]
print (last_10)
            val
Date           
1900-01-02  3.0
1900-01-03  5.1
1900-01-04  5.0

Если RangeIndex- получить 3 значения перед индексом 4, использовать DataFrame.loc:

print (market_data)
         Date  val
0  1900-01-01  2.0
1  1900-01-02  3.0
2  1900-01-03  5.1
3  1900-01-04  5.0
4  1900-01-05  6.0
5  1900-01-06  7.0
6  1900-01-07  3.0

n = 3
val = 4
last_10 = market_data.loc[val-n+1:val]
print (last_10)
         Date  val
2  1900-01-03  5.1
3  1900-01-04  5.0
4  1900-01-05  6.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...