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

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”,根据其定义“last”。)
我通过查看grouped.groups字典编写了自己的循环代码。但显然,鉴于我的大型数据集,这非常低效。我认为这可以非常直接地完成——也许我只是对pandas太新手了 :-)
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)

谢谢,Wes。之前没有注意到Github的问题。:-) - bzyueshen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接