问题标签 [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 投票
0 回答
178 浏览

python - Pandas split-apply-combine,为什么在排序时结合 pd.concat([df]) 起作用?

我使用 pandas 进行拆分应用合并类型的工作流。“应用”部分返回一个DataFrame. 当我运行的 DataFrame 第gropupby一次排序时,只需返回 a DataFramefrom applyraises ValueError: cannot reindex from a duplicate axis。相反,当我返回时,我发现它可以正常工作pd.concat([df])(而不仅仅是return df)。如果我不对 进行排序DataFrame,则两种合并结果的方式都可以正常工作。我希望排序必须对索引做一些事情,但我不明白是什么。有人可以解释一下吗?

0 投票
1 回答
3583 浏览

python - 链接 groupby 并应用 pandas

我正在寻找一种链接 groupby 并应用的方法,如下所示(参见下面的代码以获取具体示例):

我猜它不起作用,因为 groupby 需要输入一个数据帧,这并不总是上面第二个 groupby 的情况(可以输入一个系列,cf 示例)。一个解决方案可能是让第一个应用输出 func_1 的结果加上原始数据帧,但我还没有找到如何做到这一点。

我正在寻找一个通用的解决方法,而不仅仅是这个特定示例的解决方法。

示例:假设我想为 b 中的每个组计算 a 的路缘下面积,然后计算 c 中每个组的这些面积的总和。

非常感谢任何帮助!

0 投票
1 回答
905 浏览

python - 在 pandas groupby DataFrame 中创建异常值列

我有一个非常大的 pandas DataFrame,其中包含数千个代码以及与每个代码相关的成本(示例):

groupby在级别创建一个对象code,即:

现在我真的需要在这个groupedDataFrame 中添加一个新列,以确定具有异常成本的代码的百分比。我最初的方法是这个外部函数(使用iqrfrom scipy):

编写完这个函数后,我在上面添加is_outlier了我的agg论点groupby。这不起作用,因为我正在尝试为系列is_outlier中的每个元素评估此比率cost

我尝试使用pd.Series.where,但它没有与np.where. 有没有办法修改我的is_outlier函数,该函数必须将cost系列作为参数才能正确评估每个代码的异常值率?还是我完全偏离了道路?

更新期望结果(减去此示例的最低观察要求):

注意:为了让我计算异常值,我的样本很糟糕,因为我分别有 2、1 和 4 个观察值code。在生产数据框中,每个代码都有成百上千的观察结果,每个观察结果都与成本相关。在上面的示例结果中,平均值的值is_outlier意味着,对于'a'两个观察值中的一个在异常值范围内的成本,对于'c'四个观察值中的一个在异常值范围内的成本,等等 - 我正在尝试重新创建这个在我的函数中,通过分配 1 和 0 作为结果np.where()并取.mean()那个

.apply(pd.Series)需要为了转换<pandas.core.groupby.SeriesGroupBy object> resulting fromgroupbyinto a DataFrame.is a pandas Series with all values of成本for each代码, as generated from thegroupby operation (split phase ofsplit-apply-combine`)

0 投票
1 回答
33 浏览

python - How to add leading 0's to different values in same column in pandas?

I have a column that has values of length 5,6,8, or 9. The column should just have values of length 6 or 9. I need to add leading 0's if the value is of length 5 or 8.

There is another column which can identfy if the value should be 6 or 9 digits (indicator). An indicator value of 'Red' means 6 digits, and an indicator of 'Green' means 9 digits.

expected result:

I am getting an error of ValueError: Unknown format code 'd' for object of type 'float'. Any ideas why? What did I miss?

0 投票
2 回答
2064 浏览

python - 使用多列的 Pandas groupby 函数

这类似于以下内容,但是我想进一步提出一个问题: pandas groupby apply on multiple columns to generate a new column

我有这个数据框:

这个函数同时使用了我想应用于每个“组”的“比率”和“部分”列:

请注意,我的函数与我在顶部提到的问题中显示的函数之间的区别在于,我的函数返回整个组的值数组而不是单个值。我尝试了以下方法:

这些数字是正确的。但是,我需要输出是一个系列,我可以将其分配回原始数据帧,以便它看起来像这样:

我该怎么做呢?使用的是正确的方法吗?

0 投票
0 回答
262 浏览

python - 将自定义函数应用于 Pandas 数据框中的多列并在一列中返回输出

我正在将此 Excel 公式转换为 Pandas 和 Python。

这会将值返回到数据框中的列中。

我已将 raw_data 转换为数据框。我已经在定义的函数中用 Python 编写了我的逻辑。

我应该如何将该函数一次应用于多列的原始数据框?我做不到——

由于我必须逐列垂直向下移动,因此我使用的是axis = 0。

编辑

为了更清晰,将 Excel 代码写入 Python 逻辑,与 BX/BY/BZ 一起使用的数字(即 3)只是表明该公式适用于一列中的一个单元格,因此列中的值会下降对应 BX/BY/BZ -3 变化为 BX4,BX5,BX6.../BY4,BY5,BY6 等等。

因为在这里我必须垂直查看数据,所以我使用axis = 0,因为我需要在 column 中执行所有行值。

主要问题是我应该如何在这里使用“应用”与这么多不同的列。我是否也需要将列作为参数结束?

逻辑是——

我还将 raw_df 和 df 转换为 numpyarray

0 投票
2 回答
1019 浏览

python - 用不同的值填充 DataFrame 的一列的每一行(随机分布)

我有一个带 aprox 的 DataFrame。4 列和 200 行。我创建了带有空值的第 5 列:

然后,我想用随机逆对数正常值填充这个新列的每一行。生成 1 个逆对数 normal 的代码

注意:如果下面的代码运行多次,由于里面的值,它会生成一个新的结果ppf()random.random()

当我这样做时发生的事情是它用相同的 number填充所有 200 行df['minutes'],而不是像我预期的那样触发random.random()每一行。

我需要做什么?我尝试使用for loop,但显然我没有做对(给出相同的结果):

我究竟做错了什么?

inverse log normal另外,我稍后会补充一点,如果另一列的值为 0 或 1,我需要更改上面的一些参数。如:

提前致谢。

0 投票
2 回答
41 浏览

python-3.x - 不要使用 apply() 将项目映射到任何输出

假设我有一个groupby对象、一个 DataFrame 或其他任何带有apply()方法的东西。我希望某些元素不映射到任何输出。例如,在我的情况下,我有一个groupby并且我希望忽略满足特定标准的组。我怎样才能做到这一点?我已经尝试过return None正在应用的函数,但输出仍然有一个组条目(它是空的,但它仍然存在)。

例如,假设 DataFrame 如下所示:

我想运行df.apply(fn, axis=1)这样,对于好的行, fn 返回一些输出,对于坏行, fn 告诉 apply “忽略”该行,并且输出没有bad_row. 在这里,为了便于演示,我使用了 DataFrame 而不是 groupby,但这是相同的想法。

0 投票
3 回答
58 浏览

python - 如何聚合特定值的数据框?

我有一个这样的pandas数据框df,说

我想返回一个表格,计算一些activity在精确列表中出现的次数,比如l = [A, B]在这种情况下,然后

是我需要的。

执行此操作的最快方法是什么?理想情况下没有for循环

谢谢 !

编辑:我知道有pivot做这种工作的功能。但就我而言,我的activity类型比我真正需要在列表中计算的类型要多得多l。它仍然是最佳使用pivot吗?

0 投票
0 回答
28 浏览

pandas - pandas 应用或聚合

如果我有一个 pandas 数据框 df,以下三种计算列平均值的方法将给出相同的结果:

但是如果我创建一些组,并以类似的方式使用这些方法呢:

...在这个例子中 .mean 和 .aggregate 给出相同的结果,但 .apply 没有。使用 .apply 将返回分组列“A”,作为索引和列(当我遇到这个问题时,这不是我所期望或想要的)

这种行为对我来说似乎不一致,还是我错过了这三种方法之间的一些根本区别?