使用 Pandas 数据框的条件格式

Conditional Formatting using Pandas Dataframe

我正在使用 pandas 数据框。在这个数据框中,我有两列,一列是入学率(e_gk),另一列是出勤率(a_gk),数据中存在一些错误,出勤率高于实际入学率。我想在此类错误中用实际注册替换出勤值。

我针对这种情况的主要代码行。在迭代中,'e' 用于注册,'a' 用于出勤。

df['a_gk'] = [e if a > e else a for a, e in df.a_gk and df.e_gk]

这给了我以下错误:

"ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()"

问题是 and 运算符不支持 df.a_gk and df.e_gk 中的系列操作。您可能需要 zip 两列在一起。

df['a_gk'] = [e if a > e else a for a, e in zip(df.a_gk, df.e_gk)]

但您也可以在行上使用 apply

df['a_gk'] = df.apply(lambda row: row['e_gk'] if row['a_gk'] > row['e_gk'] else row['e_gk'], axis=1)

np.where

df['a_gk'] = np.where(df['a_gk'] > df['e_gk'], df['e_gk'], df['a_gk'])