python - 如何将 groupby.first() 与变换函数一起使用
问题描述
我想使用 groupby.first() 函数来查找组的第一个非空值并将该值转换为组中的每一行。
我尝试了以下代码:
import pandas as pd
import numpy as np
raw_data = {'col1': ['a','a','a','b','b','b','b','b','b','c','c','c','c','c'],
'col2': [np.nan,np.nan,6,0,2,0,8,2,2,3,0,0,4,5]}
df=pd.DataFrame(raw_data)
df['col3'] = df.groupby('col1')['col2'].transform(lambda x: x.first())
df
我想得到一个看起来像这样的df:
col1 col2 col3
a NaN 6
a NaN 6
a 6 6
b 0 0
b 2 0
b 0 0
b 8 0
b 2 0
b 2 0
c 3 3
c 0 3
c 0 3
c 4 3
c 5 3
我收到以下错误:TypeError: first() missing 1 required positional argument: 'offset'
有趣的是,如果我运行相同的代码并将 first() 换成 sum(),那么它会返回该组每一行的每个组的总和。first() 函数将不起作用。为什么不?任何帮助将不胜感激!
解决方案
与您lambda
一起尝试使用Series.first
,这仅对具有 DatetimeIndex 的系列有意义。
您想要GroupBy.first
的,可以使用命名别名访问'first'
。
df['col3'] = df.groupby('col1')['col2'].transform('first')
推荐阅读
- c++ - 如何在不使用任何循环的情况下将 std::vector 或数组插入 std::forward_list?
- angular - 如何调试写在 electron.js 文件中的脚本
- python - 使用python将文件从文件存储复制到blob存储
- reactjs - Antd 步骤组件创建单个实例而不是正确的步骤
- node.js - 如何在插座上踢别人
- python - 如何使用python从多个json文件中提取信息
- animation - iOS15 / iPhone12 setContentOffset 动画问题
- html - 如何根据用户搜索的内容显示结果 django
- google-sheets - 根据另一个单元格中提供的计数重复一个值 - Google 表格
- c# - 在 C# 中运行的所有 if 语句?