从pandas.mean()中排除列

2024-05-15 20:39:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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列的原因


Tags: ipdfhr团队mean年份bbaxis
1条回答
网友
1楼 · 发布于 2024-05-15 20:39:50

只需使用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%+    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"""), 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    mean
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  6.9375

相关问题 更多 >