1

.idxmaxを使用して、データフレーム (df) の最大値を取得できます。私の問題は、複数の列 (10 を超える) を持つ df があり、列の 1 つに同じ値の識別子があることです。最大値を持つ識別子を抽出する必要があります。

>df

id  value
a   0
b   1
b   1
c   0
c   2
c   1

今、これは私が欲しいものです:

>df

id  value
a   0
b   1
c   2

を使用して取得しようとしてdf.groupy(['id'])いますが、少し注意が必要です。

df.groupby(["id"]).ix[df['value'].idxmax()]

もちろん、それはうまくいきません。私は正しい道を進んでいないのではないかと心配しているので、皆さんに聞いてみようと思いました! ありがとう!

4

1 に答える 1

5

近い!ID でグループ化してから、列を使用します。各グループの最大値を返します。

In [14]: df.groupby('id')['value'].max()
Out[14]: 
id
a     0
b     1
c     2
Name: value, dtype: int64

Op はこれらの位置をフレームに提供したいので、変換を作成して割り当てるだけです。

In [17]: df['max'] = df.groupby('id')['value'].transform(lambda x: x.max())

In [18]: df
Out[18]: 
  id  value  max
0  a      0    0
1  b      1    1
2  b      1    1
3  c      0    2
4  c      2    2
5  c      1    2
于 2013-10-22T15:57:23.673 に答える