Как установить минимумы и максимумы в кадре данных панд? - PullRequest
0 голосов
/ 08 октября 2018

У меня есть следующий код:

from scipy.signal import argrelextrema

test = pd.DataFrame()
test['price'] = perf.price
test = test.dropna()
# reindex so index is int count
test.reset_index(inplace=True)

# get the peaks and valleys for the data set
peaks = argrelextrema(test.price.values, np.greater)
valleys = argrelextrema(test.price.values, np.less)

perf.price - это столбец данных.Я хочу добавить два новых столбца к тестовому фрейму данных: last_peak и last_valley с ценой последнего пика или долины, но я не могу заставить его работать.

argrelextrema возвращает пустой массив, поэтому я преобразовал его вpd.Series но

test.index.isin( peakSeries )

дает странные результаты

1 Ответ

0 голосов
/ 08 октября 2018

Попробуйте это:

Пример данных: perf = pd.DataFrame({'price':[100.1, 1.1, 3.5, 400, 3.1, 651, 39]})

Добавлен код:

test['peaks'] = False
test['valleys'] = False
test['peaks'].loc[peaks] = True
test['valleys'].loc[valleys] = True

Пример вывода:

   index  price  peaks  valleys
0      0  100.1  False    False
1      1    1.1  False     True
2      2    3.5  False    False
3      3  400.0   True    False
4      4    3.1  False     True
5      5  651.0   True    False
6      6   39.0  False    False

Если вы хотите добавить столбец с последним пиком и долиной:

test['last_peak'] = test.loc[peaks[0][-1]].price
test['last_valley'] = test.loc[valleys[0][-1]].price

Выход:

   index  price  peaks  valleys  last_peak  last_valley
0      0  100.1  False    False      651.0          3.1
1      1    1.1  False     True      651.0          3.1
2      2    3.5  False    False      651.0          3.1
3      3  400.0   True    False      651.0          3.1
4      4    3.1  False     True      651.0          3.1
5      5  651.0   True    False      651.0          3.1
6      6   39.0  False    False      651.0          3.1

Это то, что вы хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...