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 dict を調べて、独自のループ コードを作成しました。しかし、私の巨大なデータセットを考えると、どうやらそれは非常に非効率的です。これは非常に簡単に実行できると思います-おそらく私はパンダの初心者です:-)

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 に答える