Reputation: 1266
Is there a way I can dynamically bin the data according to the input.
Here I am trying bin data for .01 increase in Lng . Range of data is 113.88 to 114.3. Currently I am manually splitting the bins. Is there a more efficient way.
Current Code
bin_Lng = [113.88,113.89,113.9,113.91,113.92,113.93,113.94,113.95,113.96,113.97,113.98,113.99,114,114.01,114.02,
114.03,114.04,114.05,114.06,114.07,114.08,114.09,114.1,114.11,114.12,114.13,114.14,114.15,114.16,114.17,114.18,114.19,114.2,114.21,114.22,114.23,114.24,
114.25,114.26,114.27,114.28,114.29,114.3]
group_name_lng =['Lng Zone1',
'Lng Zone2','Lng Zone3','Lng Zone4','Lng Zone5','Lng Zone6','Lng Zone7','Lng Zone8','Lng Zone9','Lng Zone10','Lng Zone11',
'Lng Zone12','Lng Zone13','Lng Zone14','Lng Zone15','Lng Zone16','Lng Zone17','Lng Zone18','Lng Zone19','Lng Zone20','Lng Zone21',
'Lng Zone22','Lng Zone23','Lng Zone24','Lng Zone25','Lng Zone26','Lng Zone27','Lng Zone28','Lng Zone29','Lng Zone30',
'Lng Zone31','Lng Zone32','Lng Zone33','Lng Zone34','Lng Zone35','Lng Zone36','Lng Zone37','Lng Zone38','Lng Zone39','Lng Zone40','Lng Zone41',
'Lng Zone42']
data['Lng_Zone'] = pd.cut(data['Lng'], bin_Lng, labels=group_name_lng)
Upvotes: 0
Views: 826
Reputation: 30605
Since you know the range just use np.arange
i.e
bin_Lng = pd.np.arange(113.88, 114.3,0.01)
group_name_lng = ['Lng Zone{}'.format(i) for i in range(1,len(bin_Lng))]
Upvotes: 3