Pandas Groupby Agg 功能不减少

2024-01-10

我正在使用我在工作中已经使用了很长时间的聚合函数。这个想法是,如果传递给函数的系列的长度为 1(即该组只有一个观察值),则返回该观察值。如果传递的系列的长度大于 1,则观察结果将以列表形式返回。

这对某些人来说可能看起来很奇怪,但这不是一个 X,Y 问题,我有充分的理由想要这样做,但与这个问题无关。

这是我一直在使用的功能:

def MakeList(x):
    """ This function is used to aggregate data that needs to be kept distinc within multi day 
        observations for later use and transformation. It makes a list of the data and if the list is of length 1
        then there is only one line/day observation in that group so the single element of the list is returned. 
        If the list is longer than one then there are multiple line/day observations and the list itself is 
        returned."""
    L = x.tolist()
    if len(L) > 1:
        return L
    else:
        return L[0]

现在,由于某种原因,使用我正在处理的当前数据集,我收到一个 ValueError ,表明该函数不会减少。这是一些测试数据和我正在使用的其余步骤:

import pandas as pd
DF = pd.DataFrame({'date': ['2013-04-02',
                            '2013-04-02',
                            '2013-04-02',
                            '2013-04-02',
                            '2013-04-02',
                            '2013-04-02',
                            '2013-04-02',
                            '2013-04-02',
                            '2013-04-02',
                            '2013-04-02'],
                    'line_code':   ['401101',
                                    '401101',
                                    '401102',
                                    '401103',
                                    '401104',
                                    '401105',
                                    '401105',
                                    '401106',
                                    '401106',
                                    '401107'],
                    's.m.v.': [ 7.760,
                                25.564,
                                25.564,
                                9.550,
                                4.870,
                                7.760,
                                25.564,
                                5.282,
                                25.564,
                                5.282]})
DFGrouped = DF.groupby(['date', 'line_code'], as_index = False)
DF_Agg = DFGrouped.agg({'s.m.v.' : MakeList})

在尝试调试这个问题时,我添加了一条 print 语句,其效果是print L and print x.index和 输出如下:

[7.7599999999999998, 25.564]
Int64Index([0, 1], dtype='int64')
[7.7599999999999998, 25.564]
Int64Index([0, 1], dtype='int64')

由于某种原因,似乎agg将系列两次传递给函数。据我所知,这根本不正常,大概就是我的功能没有减少的原因。

例如,如果我写一个这样的函数:

def test_func(x):
    print x.index
    return x.iloc[0]

运行没有问题,打印语句是:

DF_Agg = DFGrouped.agg({'s.m.v.' : test_func})

Int64Index([0, 1], dtype='int64')
Int64Index([2], dtype='int64')
Int64Index([3], dtype='int64')
Int64Index([4], dtype='int64')
Int64Index([5, 6], dtype='int64')
Int64Index([7, 8], dtype='int64')
Int64Index([9], dtype='int64')

这表明每个组仅作为系列传递给函数一次。

谁能帮助我理解为什么会失败?我已经在我使用的许多数据集中成功地使用了这个函数......

Thanks


我无法真正向你解释原因,但根据我的经验list in pandas.DataFrame效果不太好。

我通常使用tuple反而。 那可行:

def MakeList(x):
    T = tuple(x)
    if len(T) > 1:
        return T
    else:
        return T[0]

DF_Agg = DFGrouped.agg({'s.m.v.' : MakeList})

     date line_code           s.m.v.
0  2013-04-02    401101   (7.76, 25.564)
1  2013-04-02    401102           25.564
2  2013-04-02    401103             9.55
3  2013-04-02    401104             4.87
4  2013-04-02    401105   (7.76, 25.564)
5  2013-04-02    401106  (5.282, 25.564)
6  2013-04-02    401107            5.282
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas Groupby Agg 功能不减少 的相关文章

  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • Statsmodels.formula.api OLS不显示截距的统计值

    我正在运行以下源代码 import statsmodels formula api as sm Add one column of ones for the intercept term X np append arr np ones 50

随机推荐

  • 回形针 - 每个样式的默认样式?可能的

    我正在使用回形针 并且有多种样式 styles gt large gt 300x300 gt medium gt 150x150 gt small gt 50x50 gt thumb gt 30x30 gt 问题是default stype
  • Linux下自动调整进程优先级

    我正在尝试编写一个程序 根据配置文件 基本上是路径 优先级对 自动设置进程优先级 我认为最好的解决方案是用一个内核模块来替换 execve 系统调用 太糟糕了 系统调用表在内核版本 gt 2 6 0 中没有导出 因此如果没有系统调用表 就不
  • Crashlytics 记录错误

    我正在使用 iOS 版 Crashlytics 记录错误 NSDictionary detail message errorWithURL response jsonString Crashlytics sharedInstance rec
  • 如何通过代理/防火墙添加网络引用?

    我目前在工作中处于防火墙后面 我正在测试已部署到 我的网站的某些内容 并且工作代理似乎在某种程度上阻止了它 基本上我收到的消息是 由于对象的当前状态 操作无效 我已将其归结为我的代理干扰 但我看不到任何高级设置或任何可以设置为通过我的代理访
  • Python:解析 JSON 时出现 Keyerror

    我刚刚编写了一个程序来解析 api 中的一些数据 API 以 JSON 格式返回数据 当我尝试解析它时 它给了我一个关键错误 Traceback most recent call last File test py line 20 in
  • 避免 Python 中不必要的切片复制

    对于这样的情况 是否有一个常见的习惯用法可以避免无意义的切片复制 gt gt gt a bytearray b hello gt gt gt b bytearray b goodbye cruel world gt gt gt a exte
  • sql-左连接-计数

    假设我有两张桌子 文章和评论 当我从文章表中选择列时 我还想在同一个选择语句中选择文章的评论数 假设这两个表之间的公共字段是articleid 我怎么做 我可以完成它 但我不知道我的方法是否有效 所以我想学习正确的方法 这应该更有效 因为分
  • 如何在android中显示所有共享选项?

    我正在开发一个 Android 应用程序 想通过打开所有设备中可用的共享选项 但目前该列表显示电子邮件 蓝牙 Gmail 和消息传递 BBC 新闻等其他应用程序在同一设备中显示了更多选项 如 Bump Picasa 等 如何显示所有可用选项
  • 在java中读取JSON对象[重复]

    这个问题在这里已经有答案了 我们如何在 JSP Servlet 或任何其他 Java 程序中读取 JSON 对象 我建议使用Gson http code google com p google gson 为了这 它的优点是对泛型的支持非常好
  • 即使首字母丢失,Elasticsearch 也会提供拼写检查建议

    我创建一个这样的索引 curl location request PUT http 127 0 0 1 9200 test header Content Type application json data raw settings num
  • 编译 Qt 库以在 Visual Studio 2008 上运行,为什么 nmake 失败?

    我正在尝试让我的 Visual Studio Qt 插件正常工作 因此为了重新编译 Qt 库 我从 VS 命令提示符运行了以下命令 c Qtfolder gt configure platform win32 msvc2008 之后我运行
  • Apple TestFlight:“此版本不再可用于测试”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我一直在使用 TestFlight 进行内部 Beta 测试 一切都已设置完毕并且已经运行了一段时间 在提交的二进制文件之一被 AppSt
  • 在Python中使用有序字典作为对象字典

    我不知道为什么这不起作用 我正在使用odict http dev pocoo org hg sandbox raw file tip odict py班级来自PEP 372 http www python org dev peps pep
  • C# 加载二进制文件

    请告诉我最好 最快的方法 1 将非常小的二进制文件加载到内存中 例如图标 2 加载 读取大小为 512Mb 的非常大的二进制文件 3 当您不想考虑大小 速度而只需要做一件事时 您的常见选择 将所有字节读入内存 谢谢你 附 抱歉 也许是一个微
  • 检查JTA事务是否成功提交

    有没有办法检查当前事务是否在 JPA 实体侦听器中提交 如下所示 ApplicationScoped public class EntityListener Inject private Event
  • 如何从 JSON 回复中提取有意义的信息? [复制]

    这个问题在这里已经有答案了 回复 印度孟买 response version 0 1 termsofService http www wunderground com weather api d terms html features ge
  • ruby中通过ioctl获取essid

    为了避免依赖无线工具 我想使用 ioctl 直接从设备获取 essid 在 C 中这不会是问题 但在 Ruby 中则完全不同 问题在于以下结构无线 h用作 ioctl 的输入 回复 struct iw point void user poi
  • 在python中将字典转换为二进制

    我有一本字典 其中键作为我的客户 ID 值作为我的电影 ID 尽管客户已经多次观看同一部电影 但我希望将其制作为一部电影 这里我需要将我的字典转换为二进制数据 在所有行中 我需要客户 ID 和列作为电影 ID 如果客户看过电影 则给出 1
  • 如何删除默认的 Bootstrap 3 轮播控件背景渐变?

    我很确定这是我需要修改的代码 但由于某种原因我无法让渐变在 IE 中消失 我要他们彻底消失 carousel control text shadow none opacity 1 filter alpha opacity 100 carou
  • Pandas Groupby Agg 功能不减少

    我正在使用我在工作中已经使用了很长时间的聚合函数 这个想法是 如果传递给函数的系列的长度为 1 即该组只有一个观察值 则返回该观察值 如果传递的系列的长度大于 1 则观察结果将以列表形式返回 这对某些人来说可能看起来很奇怪 但这不是一个 X