python - 为什么 groupby 中的 first 和 last 不给我 first 和 last

标签 python pandas group-by pandas-groupby

我发布这个是因为这个主题刚刚在另一个问题/答案中被提出,并且行为没有很好的记录。

考虑数据框 df

df = pd.DataFrame(dict(
    A=list('xxxyyy'),
    B=[np.nan, 1, 2, 3, 4, np.nan]
))

   A    B
0  x  NaN
1  x  1.0
2  x  2.0
3  y  3.0
4  y  4.0
5  y  NaN

我想获取由 'A' 列定义的每个组的第一行和最后一行。

我试过了

df.groupby('A').B.agg(['first', 'last'])

   first  last
A             
x    1.0   2.0
y    3.0   4.0

但是,这并没有给我预期的 np.NaN

如何获取每个组中的实际第一个和最后一个值?

最佳答案

如前所述here通过 @unutbu :

groupby.firstgroupby.last方法分别返回第一个和最后一个非空值。

要获取实际的第一个和最后一个值,请执行以下操作:

def h(x):
    return x.values[0]

def t(x):
    return x.values[-1]

df.groupby('A').B.agg([h, t])

     h    t
A          
x  NaN  2.0
y  3.0  NaN

关于python - 为什么 groupby 中的 first 和 last 不给我 first 和 last,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45744800/

相关文章:

python - 如何在记录列表和数组时插入换行符?

python - 修复数据框中重复的索引名称

python - FastAPI 与 pandas.read_sql() 的并行性

SQL COUNT 个,共 COUNT 个

mysql - 计算按唯一 ID 分组的表的最小值 - mysql

python - 如何嵌入成员(member)的图像和昵称? (w/discord.py)

python - 用字典替换字符串,标点符号的并发症

python - 添加分组数据框

mysql - MYSQL中按营业时间对商店进行排序

python - 如何将 Z3_ast 导出为二进制文件以及如何在其中搜索函数名称?