from statistics import mean
import pandas as pd
df = pd.DataFrame(columns=['A', 'B', 'C'])
df["A"] = [1, 2, 3, 4, 4, 5, 6]
df["B"] = ["Feb", "Feb", "Feb", "May", "May", "May", "May"]
df["C"] = [10, 20, 30, 40, 30, 50, 60]
df1 = df.groupby(["A","B"]).agg(mean_err=("C", mean)).reset_index()

df1["threshold"] = df1["A"] * df1["mean_err"]

我如何才能像Pyspark那样完成它,而不是最后一行代码.withColumn()?

enter image description here

此代码无效.我想通过动态使用操作的输出来创建新列,就像我们在Pyspark withColumn方法中所做的那样.

有人知道怎么做吗?

推荐答案

Option 1: DataFrame.eval

(df.groupby(['A', 'B'], as_index=False)
   .agg(mean_err=('C', 'mean'))
   .eval('threshold = A * mean_err'))

Option 2: DataFrame.assign

(df.groupby(['A', 'B'], as_index=False)
   .agg(mean_err=('C', 'mean'))
   .assign(threshold=lambda x: x['A'] * x['mean_err']))

   A    B  mean_err  threshold
0  1  Feb      10.0       10.0
1  2  Feb      20.0       40.0
2  3  Feb      30.0       90.0
3  4  May      35.0      140.0
4  5  May      50.0      250.0
5  6  May      60.0      360.0

Python相关问答推荐

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

将整组数组拆分为最小值与最大值之和的子数组

Pandas 都是(),但有一个门槛

更改键盘按钮进入'

Python—从np.array中 Select 复杂的列子集

Stacked bar chart from billrame

当递归函数的返回值未绑定到变量时,非局部变量不更新:

从列表中获取n个元素,其中list [i][0]== value''

使用__json__的 pyramid 在客户端返回意外格式

使用tqdm的进度条

使用python playwright从 Select 子菜单中 Select 值

你能把函数的返回类型用作其他地方的类型吗?'

ModuleNotFoundError:Python中没有名为google的模块''

如何在Pandas中用迭代器求一个序列的平均值?

将相应的值从第2列合并到第1列(Pandas )

具有不匹配列的2D到3D广播

为什么按下按钮后屏幕的 colored颜色 保持不变?

有没有一种方法可以根据不同索引集的数组从2D数组的对称子矩阵高效地构造3D数组?

使用Django标签显示信息

如何将参数名作为参数传入到函数中?