Pandas: создать новый столбец во фрейме данных со значениями, рассчитанными на основе уже существующего столбца,рассчитать максимум - PullRequest
0 голосов
/ 03 марта 2019

Я хочу создать новый столбец с вычислением максимальных значений для первого столбца следующим образом:

   High    Highest2P Highest3P  
0 101.0   102.0     103.0  
1 102.0   103.0     109.0  
2 103.0   109.0     109.0      
3 109.0   109.0  
4 100.0 

from pandas import *  

df = pd.DataFrame({  
    "High": pd.Series( [101.0, 102.0, 103.0, 109.0, 100.0] )  
})  

def calcHighest2P(x): return max(df["High"], df["High"].shift(-1))
def calcHighest3P(x): return max(df["High"], df["High"].shift(-1), df["High"].shift(-2))

df["Highest2P"] = calcHighest2P(df["High"])
df["Highest3P"] = calcHighest3P(df["High"])

Но я получаю следующее сообщение об ошибке: "ValueError: Истинное значение Series является неоднозначным. Используйте a.empty, a.bool (), a.item (), a.any () или a.all (). "

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете использовать Rolling.max с assign:

df.assign(**{
    f'Highest{i}P': pd.Series(df.High.rolling(i).max().dropna().values) 
    for i in range(2, 4)}
)

    High  Highest2P  Highest3P
0  101.0      102.0      103.0
1  102.0      103.0      109.0
2  103.0      109.0      109.0
3  109.0      109.0        NaN
4  100.0        NaN        NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...