首页 > 解决方案 > 同一列中两行之间的最大值

问题描述

我想添加一个新列“B1”,它将是“b”的当前值和前一个值之间的最大值。我添加了 max 函数,但它不起作用:

data = {
    'a' : [85, 75, 85, 33, 99, 45],
    'b' : [35, 45, 83, 88, 56, 20],
     'c' : [51, 61, 45, 67, 39, 30],
     'd' : [67, 88, 5, 34, 57, 69]
}

df = pd.DataFrame(data)
df['A1'] = df['a'].shift(+1)
df['B1'] = max(df['b'], df['b'].shift(+1))
df.head(10)
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

谢谢您的帮助

标签: pythonpandasmax

解决方案


使用dataframe.max(axis =1)

data = {
    'a' : [85, 75, 85, 33, 99, 45],
    'b' : [35, 45, 83, 88, 56, 20],
     'c' : [51, 61, 45, 67, 39, 30],
     'd' : [67, 88, 5, 34, 57, 69]
}

df = pd.DataFrame(data)
df['A1'] = df['a'].shift(+1)
# df['B1'] = max(df['b'], df['b'].shift(+1))
df['b_shifted']=df["b"].shift()
df["B1"] = df[["b","b_shifted"]].max(axis=1)
df.drop(columns = ["b_shifted"], inplace = True)

推荐阅读