[英]Pandas: Create a new column in a data frame with values calculated from an already existing column, i. calculate maximum
我想在第一列上创建一个具有最大值计算的新列,如下所示:
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:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。”
您可以将Rolling.max
与assign
Rolling.max
使用:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.