问题标签 [pandas-apply]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
412 浏览

python - 是否有 Pandas 解决方案(例如:使用 numba 或 Cython)来使用索引、MultiIndexed DataFrame 进行“转换”/“应用”?

是否有 Pandas 解决方案——例如:使用 numba 或 Cython——到transform/apply使用索引?

我知道我可以使用iterrows,itertuples或. 但是我想要做的应该是微不足道的矢量化......我已经为我的实际用例(可运行代码)构建了一个简单的代理: iteritemsitems

实际输出

我想要的输出


可能相关:如何在 pandas 中查询 MultiIndex 索引列值

本质上,我正在寻找与JavaScript 相同的Array.prototype.map行为(沿idx.

0 投票
1 回答
116 浏览

python - 熊猫:如何进行分组和联合

我有以下格式的数据框:

列以外domain的值只能为 0 或 1。我想一起执行 group by (在域上)和 union (在其余列上),以便输出显示中每列的值的联合团体。

在上面给出的示例数据中,我希望输出为:

我见过的 group by 示例在一个列上应用 group by,然后在其他列上应用聚合函数(sum、mean、max 等)。我无法弄清楚如何在其余列上应用联合。

0 投票
1 回答
95 浏览

python - Pandas 适用于 groupby-frames 和完整数据帧

给定一个 Pandas 数据框,我通过应用自定义函数的 groupby 表达式评估几个变量。工作正常(暂时忽略第二个 0-index-column),但我也想将该函数应用于完整的 DataFrame。

产量

但是 xxx.apply(myagg) 抛出:

AttributeError: ("'Series' 对象没有属性 'val'", '发生在索引 cls')

我可以创建一个常量虚拟变量并按它分组以接收我希望的结果 - 但肯定会有更简单的方法来做到这一点。如果 type(xxx) 返回 pandas.core.frame.DataFrame,为什么 pandas 会将没有 groupby 的帧视为一个系列?我在熊猫 0.23.4;蟒蛇 3.6。

0 投票
2 回答
84 浏览

python - 如何在 Pandas 中使用需要两个向量的函数 apply

我想传递向量列以应用于 pandas 数据帧,这是一个简化:

有或没有axis=1. 我想避免走很长的路

这可能很容易,但我做了一些研究,不知道该怎么做。返回的值应该是 0.25

0 投票
1 回答
123 浏览

python - Python pandas groupby 返回所有条目而不是分组条目

我在 pandas 数据框中有一个时间序列的返回,其日期索引和返回列标记为“TRI”,如下所示:

我正在尝试使用 pandasgroupby方法在不同的时间间隔内汇总累积回报。我创建了一个自定义方法:

但我无法在apply通话中成功使用它。

作为参考,这组(按年份)按预期进行,尽管总和很简单:

输出:

但是应用我的cumRets方法,我得到了所有行而不是汇总的年份总数。此调用在每个月的最后一天返回正确的值,但返回之前的每一行而不是仅按值指定的组:

输出:

所需的输出看起来像这样(删节):

问题 1a是我如何在每月和每周的间隔中做同样的事情,其中​​所需的输出分别如下所示(仅格式,值是占位符):

输出,每月:

输出,每周:

0 投票
1 回答
91 浏览

python - Pandas Split (group) + Apply + Rejoin (concat) 出现无法解释的行为,但仅在排序时

我正在尝试为 Pandas 数据框中的组计算列与其滞后(移位)之间的距离。需要对组进行排序,以使班次早于一个时间步。执行此操作的标准方法是.groupby()(又名拆分),然后.apply()在每个组上使用距离函数,然后使用.concat(). 这很好用,但只有当我没有明确对分组数据框进行排序时。当我对分组数据框进行排序时,在重新加入步骤中出现错误。

这是我的示例代码,我能够重现意外行为:

当对分组数据帧进行排序的代码被注释掉时,代码会打印出来,这是预期的:

使用排序线,Traceback 看起来像这样:

排序但不运行 concat 会为 df_g 打印这个:

这表明它的分组方式与没有排序的 df_g 的打印(上图)不同,但尚不清楚在这种情况下 concat 是如何中断的。


更新:我以为我已经通过重命名有问题的列(在本例中为“X”)并.reset_index()在合并之前使用分组数据框来解决它。

按预期运行,并打印:

但仔细观察,此列显示合并不正确:


我正在使用带有 Python 3.7.6 的 Mac OSX | conda-forge 打包| (默认,2020 年 1 月 7 日,22:05:27)

Pandas 0.24.2 + Numpy 1.17.3 并尝试升级到 Pandas 0.25.3 和 Numpy 1.17.5,结果相同。

0 投票
2 回答
1974 浏览

python - 熊猫 groupby() 的 KeyError 应用()

在这里,我将时间添加到仅给出日期的数据中。值之间有 5 分钟或每个日期 288 个值。
该代码在输入数据帧为 1 天(288 行)或更短时有效,但在输入较长时会出错。知道我错过了什么吗?提前致谢。

相关代码部分:

输出(288 行或更少,按预期工作):

回溯(有 289 行或更多,我明白了):

编辑
感谢所有帮助。根据您的建议,此解决方案似乎对我有用,没有SettingWithCopyWarning


Python:3.7.4
熊猫:0.25.3
Jupyter Lab

0 投票
1 回答
69 浏览

pandas - 使用 Panda 的 Apply 计算值 - KeyError

我有一个看起来像这样的 Panda DataFrame:

我想添加一个名为“流行”的新列,即该行的病例数除以人口数。这行代码有效:

但是,我想使用 Panda 的 apply 来做同样的事情。这是我正在尝试做的事情:

我得到一个KeyError: 'prevalence'

任何想法我做错了什么?

0 投票
1 回答
45 浏览

python - pd.Series.apply 关键字参数是一个 pd.series

我在数据框中的系列上使用 apply 来使用具有多个关键字参数的函数。我在第一个输入(称为 sk)上使用 apply 函数,然后在我的数据框的其他列中使用其他参数。我的应用线如下所示:

我收到错误消息(该函数正在查询 Oracle SQL 数据库):

但是,如果我使用:

它没有问题,但是使用 pd.series 引用的目的是它可以向下移动每一行并返回函数输出。报告系列和 rssd 因行而异。我真的不能分享更多的代码,所以我很抱歉没有分享很多。

我正在尝试做的事情可能吗?

0 投票
1 回答
1589 浏览

python - GroupBy 应用 Python Pandas 的更快方法?

如何使 Groupby Apply 运行得更快,或者如何以不同的方式编写它?

输出:

我的程序现在运行很慢。我可以让它更快吗?我过去在使用 groupby() 之前进行了过滤,但在这种情况下我没有看到一种简单的方法。