Pandas - DataFrame 聚合行为异常

2023-11-30

相关Dataframe聚合方法传递列表问题 and Pandas 无法使用聚合函数列表进行聚合

考虑这个数据框

import pandas as pd
import numpy as np
df = pd.DataFrame(index=range(10))
df['a'] = [ 3 * x for x in range(10) ]
df['b'] = [ 1 -2 * x for x in range(10) ]

根据文档 for aggregate您应该能够使用指定要聚合的列dict像这样:

df.agg({'a' : 'mean'})

哪个返回

a    13.5

但如果你尝试aggregate使用像这样的用户定义函数

def nok_mean(x):
    return np.mean(x)

df.agg({'a' : nok_mean})

它返回每行而不是列的平均值

      a
0   0.0
1   3.0
2   6.0
3   9.0
4  12.0
5  15.0
6  18.0
7  21.0
8  24.0
9  27.0

为什么用户定义的函数返回的结果与聚合不同np.mean or 'mean'?

这是使用pandas版本0.23.4, numpy版本1.15.4, python版本3.7.1


该问题与申请有关np.mean到一个系列。让我们看几个例子:

def nok_mean(x):
    return x.mean()

df.agg({'a': nok_mean})

a    13.5
dtype: float64

这按预期工作,因为您使用的是 pandas 版本的平均值,它可以应用于系列或数据框:

df['a'].agg(nok_mean)
df.apply(nok_mean)

让我们看看当np.mean应用于一系列:

def nok_mean1(x):
    return np.mean(x)

df['a'].agg(nok_mean1)
df.agg({'a':nok_mean1})
df['a'].apply(nok_mean1)
df['a'].apply(np.mean)

全部返回

0     0.0
1     3.0
2     6.0
3     9.0
4    12.0
5    15.0
6    18.0
7    21.0
8    24.0
9    27.0
Name: a, dtype: float64

当你申请时np.mean到数据框它按预期工作:

df.agg(nok_mean1)
df.apply(nok_mean1)

a    13.5
b    -8.0
dtype: float64

为了得到np.mean要按预期使用函数,请传递 x 的 ndarray:

def nok_mean2(x):
    return np.mean(x.values)

df.agg({'a':nok_mean2})

a    13.5
dtype: float64

我猜这一切都与apply, 这就是为什么df['a'].apply(nok_mean2)返回属性错误。

我猜here在源代码中

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas - DataFrame 聚合行为异常 的相关文章

随机推荐

  • 如何重定向并返回 200 状态代码

    我有一个 Rails 应用程序 当用户填写表单时 它会使用新信用卡 ping stripe 完成后 它会重定向回主页 然而 stripe 说我返回 503 我认为这就是代码 而不是 200 我正在执行常规的redirect to root
  • Composer 类映射和加载具有非标准扩展名的文件

    通过composer加载文件时classmap功能是否可以加载具有非标准扩展名的 PHP 文件 例如myFileName stub or myFileName foo 目前似乎还没有加载它们 Composer 目前将包含具有以下扩展名的文件
  • 漂亮的 URL ASP.NET MVC

    如何获得漂亮的网址 如 localhost 8888 News Example post 而不是 localhost 8888 Home Details 2 我的 HomeController 有以下详细信息方法 public Action
  • 重新部署远程 glassfish 货物失败

    我目前正在尝试使用 Cargo 通过 Atlassian 的 Bamboo 在远程 glassfish 3 1 2 上部署应用程序 这是一个开发环境 因此具有不同版本号的相同应用程序每次都会部署在相同的上下文根上 但每次我以 Maven 目
  • 日期选择器 minDate 今天和 maxDate 明年 12 月 31 日

    尝试将日期选择限制在今天和明年 12 月 31 日之间 function public holiday date pick datepicker minDate 0 yearRange 0 1 maxDate hideIfNoPrevNex
  • 如何在Python pandas中从Excel文档中读取数据透视表?

    我有一份 Excel 文档 其中包含体育栏 其中有体育名称和运动员姓名 如果我点击运动名称 运动员的名字就会消失 即运动员的名字是运动名称的子代 Please look at the data below 如果我点击板球 那么 ramesh
  • 如何在 Express 中发送标头 [MEAN]

    我是 Express 的初学者 所以我可能没能正确地提出这个问题 我创建了一个 MEAN 应用程序 其中我将我的frontend and backened 前端运行于port 4200服务器运行于port 3000 作为部署的一部分 我想在
  • python绘图日期轴作为字符串而不是日期

    我想使用 pythonplotly 创建一个条形图 其中 x 轴日期作为字符串 类别 由于某种原因 plotly 不断将字符串转换为日期 我的 x 轴是日期的连续 时间线 而不是我期望的类别 我的问题 如何构建一个条形图 将我的日期作为类别
  • RichTextBox 的只读内容不显示图像

    我遇到过一些奇怪的行为RichTextBox 我希望它是readonly 但是当我使用时它不显示图像richTextBox LoadFile path 加载方法 rtf文件 当它不是readonly文件已正确加载并显示图像 我正在使用 Wi
  • Android折叠工具栏:如何调整文本大小,使其显示全文而不是部分文本

    我正在使用 CollapsingToolbarLayout 我使用以下代码来显示标题 collapsingToolbar CollapsingToolbarLayout findViewById R id collapsing toolba
  • jQuery UI Slider - 禁用轨道上的滑动/启用手柄 mousedown

    我有一个 jQuery UI 滑块 当用户尝试使用轨道滑动时我想禁用它 它应该仅在有人将手柄拖动到某处时才起作用 启用 应禁用单击并尝试拖动滑动来移动手柄 我不确定这是否可以使用来完成unbind or mousedown event 我注
  • MVC 中的简单会员提供程序

    如何从 ASP NET MVC4 中的空 Web 应用程序模板创建简单的会员提供程序 我在谷歌 必应和许多其他网站上搜索了很多 但没有得到关于会员提供商的积极回应 有人可以告诉我会员提供商的基本情况吗 please 我按照以下步骤操作 因此
  • Enter 键上的 JQuery 自动完成操作

    我希望自动完成功能像这样 当用户在文本框中输入内容时 不应发生任何事情 仅当用户完成书写时才应出现自动完成建议列表 在文本框中输入并按回车键 知道如何做到这一点 或者在哪里更改代码 STEP 1
  • 从打开的“FILE*”获取缓冲参数

    在C中 我们可以使用设置vbuf 设置缓冲区 其大小和缓冲模式 我惊讶地发现没有人问如何read这些值 给定一个开放的FILE e g stdout 或用户提供 即 如何实现 getvbuf 例行公事 甚至是其中的一部分 void getv
  • 为什么我的 Xamarin iOS 中的 WebRequest 在 ipv6 环境中失败?

    我设置了本地ipv6环境如下https developer apple com library content documentation NetworkingInternetWeb Conceptual NetworkingOvervie
  • 如何使用 Microsoft Bot Framework 显示来自我的机器人的欢迎消息

    我想在有人连接到我的机器人时显示欢迎消息 我使用了 github 上的 demo ContosoFlowers 示例中的技术 https github com Microsoft BotBuilder Samples tree master
  • 绘制太多点?

    R 基 格或其他 如何从 100000 个元素向量 或输出该值的函数 创建图形 它会阴谋一些而拒绝另一些吗 将所有内容都放在彼此之上 我怎样才能改变这种行为 我怎样才能创建一个图表 让我在每个时间间隔都能看到最大值和最小值 就像交易 条形
  • 导出的 JAR 无法读取图像 [重复]

    这个问题在这里已经有答案了 我正在尝试让图像显示在 JPanel 中 这是我正在使用的代码 URL imageURL BufferedImage image null ImageIcon icon imageURL getClass get
  • 使用 PDO 在 postgres 中自动回滚

    我发现postgres PDO自动回滚当抛出异常时 先前的更改 即使异常被捕获并吞下 示例 伪代码 transaction gt begin try manager gt insert INSERT try manager gt exec
  • Pandas - DataFrame 聚合行为异常

    相关Dataframe聚合方法传递列表问题 and Pandas 无法使用聚合函数列表进行聚合 考虑这个数据框 import pandas as pd import numpy as np df pd DataFrame index ran