python - 从 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 列是必要的。
解决方案
只需将其从您的计算中排除,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
推荐阅读
- apache-spark - 数据框架构不同于手动定义的架构(教科书示例)
- python - 我想使用 python 抓取所有标题的 url
- javascript - 如何在 webpack/vue cli 中使用 uglifyjs 缩小和压缩 css/scss?
- vue.js - Nuxt Vuex 突变运行但不更新状态
- postgresql - Drupal 8 和 PostgreSQL:如何在 WHERE 子句中使用表达式的结果?
- mysql - 使用 COALESCE 更新 INNER JOIN 返回的结果与类似的 SELECT 查询不同
- c++ - 为什么我的函数返回一个空字符串?
- docker - 使用 Jenkins Container 构建 Delphi 应用程序
- python - POST方法django后重定向到同一页面
- apache-spark - 在本地动态火花集群上运行并行作业