从 pandas .mean() 中排除列

我有一个 df ,其中包含给定年份的给定统计数据中每个团队的排名。它看起来像这样:


teamID  yearID  W   L   IP  WHIP    K%  BB% HR/9    ERA FIP ERA-    FIP-    K/BB+   WHIP+   K%+ BB%+    WAR

1209    Athletics   2001.0  2.0 6.0 3.0 7.0 19.0    9.0 1.0 7.0 5.0 7.0 5.0 8.0 7.0 11.0    10.0    4.0

我想创建一个列,其中包含每行的平均排名,但是执行 df.mean(axis=1) 包括年份(2001)并且确实会导致数字丢失。有人知道如何用 lambda 和 .apply() 来解决这个问题,或者是否有一个可以排除某些列的 kwarg?我还没找到。我想跨年执行此操作,这就是 YearID 列是必要的原因。


慕妹3146593
浏览 97回答 1
1回答

catspeake

只需使用loc[]列上的推导式将其从计算中排除即可。df = pd.read_csv(io.StringIO("""teamID  yearID  W   L   IP  WHIP    K%  BB% HR/9    ERA FIP ERA-    FIP-    K/BB+   WHIP+   K%+ BB%+    WAR1209    Athletics   2001.0  2.0 6.0 3.0 7.0 19.0    9.0 1.0 7.0 5.0 7.0 5.0 8.0 7.0 11.0    10.0    4.0"""), sep="\s+")df["mean"] = df.loc[:,[c for c in df.columns if c!= "yearID"]].mean(axis=1)输出         teamID  yearID    W    L   IP  WHIP    K%  BB%  HR/9  ERA  FIP  ERA-  FIP-  K/BB+  WHIP+   K%+  BB%+  WAR    mean1209  Athletics  2001.0  2.0  6.0  3.0   7.0  19.0  9.0   1.0  7.0  5.0   7.0   5.0    8.0    7.0  11.0  10.0  4.0  6.9375
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python