2016-08-09 7 views
0

データフレームにはゼロから始まるint値を持つ時間カラムがあります。私はステップがts = df['time'].max()/100である100グループ(例えば)に私のデータフレームをグループ化したい。 t より小さい場合は、tnp.linspaceで始まり、df['time'].max()で終わるベクトルである場合、 '時間'列の各値をテストすることです。パンダのデータフレームの行セットにグループ#を割り当てるにはどうすればよいですか?

df.head() 
    0 1 2   3  time 
0 1 1 1 1130165891 59559371 
1 2 1 1 1158784502 88177982 
2 2 1 1 1158838664 88232144 
3 2 1 1 1158838931 88232411 
4 2 1 1 1158839132 88232612 

答えて

2

あなたがグループを生成するためにpd.cutを使用することができます:ここで

は私のデータフレームがどのように見えるかであるデータセットがあるので

df.groupby(pd.cut(df['time'], 2)).mean() 
Out: 
          0 1 2   3  time 
time              
(59530697.759, 73895991.5] 1 1 1 1130165891 59559371 
(73895991.5, 88232612]  2 1 1 1158825307 88218787 

これは、最低でも唯一の2グループと開始を持っています非常に少ない。グループの数を変更することができます。グループ数を渡す代わりに、ブレークポイントを渡すこともできます(np.linspaceを除いて)。

df.groupby(pd.cut(df['time'], [0, 6*10**7, np.inf], include_lowest=True)).mean() 
Out: 
       0 1 2   3  time 
time           
[0, 60000000] 1 1 1 1130165891 59559371 
(60000000, inf] 2 1 1 1158825307 88218787 

両方の例で平均をとって、どのように動作するかを示しました。 groupbyオブジェクトに対して別のメソッドを使用できます。

+0

エレガント!私のために働く。 – sAguinaga

関連する問題