4

假设我dataframe看起来像:

      a      b
0    11      A
1    -2      A
2     3      A
3    NA      A
4   0.5      B
5    NA      B
6    -9      B

我可以按“b”创建一个组。有没有一种快速的方法来获取每个组的“a”中的最后一个非 NA 值?在这种情况下,A 组为 3,B 组为 -9。

(在这种情况下,序列“a”按给定排序,但可能并非如此。可能还有另一列“c”,根据它定义“最后一个”。)

我通过查看 grouped.groups 字典编写了自己的循环代码。但显然,鉴于我庞大的数据集,这非常低效。我认为这可以非常简单地完成——也许我对熊猫太陌生了:-)

4

1 回答 1

4

我最近为此添加了一个 github 问题:https ://github.com/pydata/pandas/issues/1043

与此同时,你可以这样做:

def get_last_valid(series):
    return series.dropna().iget(-1)

df.groupby('b')['a'].apply(get_last_valid)
于 2012-04-18T01:07:15.063 回答