2016-12-01 1 views
2
Machine_number Machine_Running_Hours 
0    1.0     424.0 
1    2.0     458.0 
2    3.0     465.0 
3    4.0     446.0 
4    5.0     466.0 
5    6.0     466.0 
6    7.0     445.0 
7    8.0     466.0 
8    9.0     447.0 
9    10.0     469.0 
10   11.0     467.0 
11   12.0     449.0 
12   13.0     436.0 
13   14.0     465.0 
14   15.0     463.0 
15   16.0     372.0 
16   17.0     460.0 
17   18.0     450.0 
18   19.0     467.0 
19   20.0     463.0 
20   21.0     205.0 

機械番号によって分類しようとしています。 Machine_number 1〜5は1つのグループになります。その後、1つのグループで6から10など。グループの列を分類して辞書に格納するのは簡単な方法ですか?

答えて

2

私はあなたがsubでsubstract 1が必要だと思うし、その後floordiv

df['g'] = df.Machine_number.sub(1).floordiv(5) 
#same as // 
#df['g'] = df.Machine_number.sub(1) // 5 
print (df) 
    Machine_number Machine_Running_Hours g 
0    1.0     424.0 -0.0 
1    2.0     458.0 0.0 
2    3.0     465.0 0.0 
3    4.0     446.0 0.0 
4    5.0     466.0 0.0 
5    6.0     466.0 1.0 
6    7.0     445.0 1.0 
7    8.0     466.0 1.0 
8    9.0     447.0 1.0 
9    10.0     469.0 1.0 
10   11.0     467.0 2.0 
11   12.0     449.0 2.0 
12   13.0     436.0 2.0 
13   14.0     465.0 2.0 
14   15.0     463.0 2.0 
15   16.0     372.0 3.0 
16   17.0     460.0 3.0 
17   18.0     450.0 3.0 
18   19.0     467.0 3.0 
19   20.0     463.0 3.0 
20   21.0     205.0 4.0 

辞書に必要ストアはdict comprehensiongroupbyを使用する場合:

dfs = {i:g for i, g in df.groupby(df.Machine_number.astype(int).sub(1).floordiv(5))} 
print (dfs) 
{0: Machine_number Machine_Running_Hours 
0    1.0     424.0 
1    2.0     458.0 
2    3.0     465.0 
3    4.0     446.0 
4    5.0     466.0, 1: Machine_number Machine_Running_Hours 
5    6.0     466.0 
6    7.0     445.0 
7    8.0     466.0 
8    9.0     447.0 
9   10.0     469.0, 2:  Machine_number Machine_Running_Hours 
10   11.0     467.0 
11   12.0     449.0 
12   13.0     436.0 
13   14.0     465.0 
14   15.0     463.0, 3:  Machine_number Machine_Running_Hours 
15   16.0     372.0 
16   17.0     460.0 
17   18.0     450.0 
18   19.0     467.0 
19   20.0     463.0, 4:  Machine_number Machine_Running_Hours 
20   21.0     205.0} 
print (dfs[0]) 
    Machine_number Machine_Running_Hours 
0    1.0     424.0 
1    2.0     458.0 
2    3.0     465.0 
3    4.0     446.0 
4    5.0     466.0 

print (dfs[1]) 
    Machine_number Machine_Running_Hours 
5    6.0     466.0 
6    7.0     445.0 
7    8.0     466.0 
8    9.0     447.0 
9   10.0     469.0 
+0

感謝を。私は辞書としてグループを格納できるように他の方法はありますか? – Dheeraj

+0

@piRSquared - ありがとうございます。 – jezrael

関連する問題