python - Pandas:如何在 lambda 公式中使用 (df.groupby)
问题描述
下面的例子:
import pandas as pd
list1 = ['a','a','a','b','b','b','b','c','c','c']
list2 = range(len(list1))
df = pd.DataFrame(zip(list1, list2), columns= ['Item','Value'])
df
给出:
必需:GroupFirstValue 列,如下所示。
这个想法是使用 lambda 公式来获取每个组的“第一个”值。例如“a”的第一个值是 0,“b”的第一个值是 3,“c”的第一个值是7. 这就是为什么这些数字出现在 GroupFirstValue 列中的原因。
注意:我知道我可以通过 2 个步骤执行此操作……一个是原始 df,第二个是按 df 分组,然后将它们合并在一起。我们的想法是看看这是否可以在一个步骤中更有效地完成。提前谢谢了!
解决方案
groupby 并首先使用
df.groupby('Item')['Value'].first()
或者您可以使用转换并分配给框架中的新列
df['new_col'] = df.groupby('Item')['Value'].transform('first')
推荐阅读
- python - Flask_SQLAlchemy,db.create_all() 在通过服务类导入时无法“看到”我的表
- android - 像其他流行的应用程序一样在 dallery 和其中的图像/视频中显示应用程序文件夹
- rust - 货物运行抛出openssl错误并且无法编译
- angular - 我使用 angular 11 开了一张发票,但我无法计算总金额和总金额
- python - TypeError:预期的 str、bytes 或 os.PathLike 对象,而不是 Streamlit Web 应用程序中的 PngImageFile
- php - 使用 PHP foreach 循环在许多 html div 标签中显示数据
- asp.net-core - 尽管配置遵循文档,为什么 CORS 会阻止我在 Bolero (F# Blazor) 中的获取?
- angular - 其他函数中元素的角度刷新 validateFn
- python - 需要帮助使所得税计算器的代码在 Python 上更高效
- python - 如何使用 buildpack 构建非 web python 应用程序映像?