2

私のデータフレームは次のようなものです:

col1   col2  col3
divq   .233     1
divq   .991     2
divq  1.821     3
divq  2.889     1
divq   .121     2
divq   .337     3

col3 を追跡/カウントし、その発生を追加する新しい col が必要です。したがって、上記の例では、新しい col4 は一連の値 1、2、3 を探し、それを最初の出現としてマークし、続けて 1 ~ 3 の 2 番目の出現を見つけます。

col4
1
1
1
2
2
2

私の実際のデータ フレームでは、上記の 10 回の繰り返しがあります。

4

1 に答える 1

2

groupbyまず、列 3を実行できます。

In [11]: g = df.groupby('col3')

次に、(任意の列を使用して)変換を使用して、各グループの結果を列挙します。

In [12]: g['col1'].transform(lambda x: np.arange(len(x)))
Out[12]: 
0    0
1    0
2    0
3    1
4    1
5    1
Name: col1, dtype: object

そして、これを列 4 として設定します。

In [13]: df['col4'] = g['col1'].transform(lambda x: np.arange(len(x)))

In [14]: df
Out[14]: 
   col1   col2  col3 col4
0  divq  0.233     1    0
1  divq  0.991     2    0
2  divq  1.821     3    0
3  divq  2.889     1    1
4  divq  0.121     2    1
5  divq  0.337     3    1
于 2013-08-15T12:36:06.620 に答える