使用 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'])
我正在使用 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'])