问题标签 [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.
python - Pandas groupby and apply function to numeric columns
I'm trying to apply the shapiro-wilk test to my dataframe, which is split into groups based on two categorical variables:
This results in an error saying that it couldn't convert string to float. The only non-numeric columns in there are the two categories which I'm using to split the dataframe.
How do I fix it?
EDIT:
example data:
I want to get the shapiro statistic and a p value for each of the numeric columns without having to write all possible combinations of each category.
python - apply() 方法:通过第二列的总和对第一列进行归一化
我无法理解函数的工作原理:
(摘自:“Python 数据科学手册”,Jake VanderPlas,第 167 页)
返回这个:
对我来说,了解其工作原理的最佳方法是手动计算值。
有人可以解释如何手动到达“data1”列的第二个值:0.142857
是1/7吗?但是这些值从何而来?
谢谢!
python - 在熊猫中逐行应用具有滚动窗口的自定义函数
我有一个函数,我想在数据帧中逐行应用并输出一个带有结果的新列。通常这对于一个lambda
函数来说很简单,或者.map()
但我被卡住了,因为该函数需要一个带有窗口的滚动最小值/最大值,而 lambda 显然只会看到该行。
这是功能:
这是我的数据的样子:
有任何想法吗?
python - pandas df.apply 意外更改数据框
据我了解,pandas.DataFrame.apply 不会就地应用更改,我们应该使用它的返回对象来持久化任何更改。但是,我发现以下不一致的行为:
为了确保原始 df 保持不变,让我们应用一个虚拟函数:
这表现如预期。但是,如果我们修改初始化此 df 的方式, foo 将应用更改:
我还注意到,如果列 dtypes 不是“对象”类型,则上述内容不正确。为什么 apply() 在这两种情况下表现不同?
蟒蛇:3.6.5
熊猫:0.23.1
python - 当单元格包含列表时,熊猫适用
我有DataFrame
一列包含列表作为单元格内容,如下所示:
我想对 的每个元素进行一些转换col_lists
,例如:
使用此数据框,这可以按我的预期工作,但是,当我将相同的代码应用于其他数据框时,我得到了一个奇怪的结果——对于每一行,该列仅包含列表的第一个元素:
我有两个问题:
(1) 这里发生了什么?为什么我得到正确的结果df
,但不是df2
?
(2) 如何正确地将一些转换应用于 a 中的列表DataFrame
?
python - 在二级索引中应用新行
我有一个看起来像这样的数据框:
本质上是垂直的两级索引。第一层是产品,第二层是收入或成本。
我想在收入和成本(简称收入 - 成本)下的所有产品中添加一个利润行。甚至是该产品的平均收入等。但是,经过大量的应用实验后,我似乎无法让它与多层次一起使用。
这怎么可能实现?
pandas - 连接多行熊猫中多列的字符串?
我有两个日期框架如下:
现在我已经合并了两个框架,如下所示:
我想分组
但我希望输出看起来像这样:
我如何实现这一目标?我基本上需要弄清楚如何 .apply(','.join) 一起为多个列?
pandas - 将 np.random.rand 应用于组 - 优化问题
需要优化在计算期间将执行数万次的单行代码,因此时间成为一个问题。看似简单,实则卡住了。
该行是:
所以我想为每个组分配相同的随机数并“取消分组”。由于使用此实现多次调用 rand(),因此代码非常无效。
有人可以帮助向量化吗?
python - 如何在没有 lambda 的行上使用 pandas 应用函数?
我不太了解该apply
功能是如何工作的。这是我的代码,它工作正常:
但我想在不使用 lambda 函数的情况下做同样的事情。我试过这个:
和这个
但没有一个有效。
你能告诉我如何在不使用 lambda 函数的情况下使用我的函数吗?
一个精度:我想使用复杂的功能,所以
不会工作。
我知道解决方案
但我不喜欢它:如果不查看函数(apply ligne 中没有参数)就无法理解应用了什么+函数很丑:函数不是通用的并且与 row.a 和 row.b 相关联
结论:目前最好的解决方案似乎是
如果不对复杂函数使用 lambda 并使用良好的编码实践,似乎不可能做到这一点
python - 使用 Pandas 中的字典从两列创建新列
我想为分组列的每一组创建一个基于组和阈值的列,以便从另一列截断。
数据框如下:
所以我创建了一个基于“identif”列的每一组的字典:
所以我的目标是根据以下条件创建一个新列,比如“chk”:
如果“identif”列与字典“md”中的键匹配,并且该键的值大于“myvalue”列中的相应值,那么我将得到 1,否则为 0。
但是,我正在尝试找到一种使用 map/groupby/apply 创建新输出数据框的好方法。我现在正在使用如下函数做一个非常低效的方法(这在百万行的真实数据上花费了大量时间):
通过以下调用获取输出:
所以我的输出将是:
这可行,但效率极低,并且希望有更好的方法来做到这一点。