从pandas DataFrame返回最后一个有效(非null)值

时间:2012-04-17 20:03:14

标签: python pandas dataframe group-by pandas-groupby

假设我有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',根据该列确定'last'。)

我通过查看groups.groups dict编写了自己的循环代码。但显然,鉴于我庞大的数据集,效率非常低。我认为这可以非常直接地完成 - 也许我对熊猫太新手了: - )

1 个答案:

答案 0 :(得分: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)