In [12]:
# Import Libraries
import pandas as pd
import geopandas as gpd
from shapely.geometry import Point, Polygon
import lxml
import os
import glob
import time
import datetime
import json
import itertools
import math
In [13]:
# Set Output Folder
output_folder = os.path.abspath("output")
if not os.path.exists(output_folder):
    os.makedirs(output_folder)
In [14]:
# Import data folders
data_folder = os.path.abspath("data")
In [21]:
# Read Constituency Data
ac_gdf = None
ac_filepath = os.path.join(data_folder, "AC", "India_AC.shp")
ac_gdf = gpd.read_file(ac_filepath)
ac_gdf

# Read Constituency Data
ac_file = os.path.join(data_folder, "General_Later_Ashoka_alldata.csv")
acdf = pd.read_csv(ac_file)
acdf['state_name'] = acdf['state_name'].str.replace("_", " ")
#acdf = acdf[['state_name', 'constituency_no', 'constituency_name', 'year', 'month']]
acdf = acdf.drop_duplicates(subset=None, keep="first", inplace=False).reset_index(drop=True)
acdf.loc[acdf['newstate_code'] == 36, 'newstate_code'] = 28 #Telangana  Fix
acdf = acdf[['state_name', 'state_code', 'constituency_no', 'year', 'month']]
acdf['day'] = 1
acdf['dyear'] = 0
acdf.loc[(acdf['month'] > 7), 'dyear'] = 1
acdf['dyear'] = acdf['year'] + acdf['dyear']
acdf['datetime'] = pd.to_datetime(acdf[['year', 'month', 'day']])
acdf = acdf.drop_duplicates().reset_index(drop=True)
acdf = pd.merge(acdf, ac_gdf,  how='inner', left_on=['state_code', 'constituency_no'], right_on = ['ST_CODE','AC_NO'])#[['ST_CODE', 'ST_NAME','DT_CODE', 'DIST_NAME', 'AC_NO', 'AC_NAME', 'PC_NO', 'PC_NAME']]
acdf = acdf[acdf.columns[:-5]]
acdf
Out[21]:
state_name state_code constituency_no year month day dyear datetime OBJECTID ST_CODE ST_NAME DT_CODE DIST_NAME AC_NO AC_NAME PC_NO PC_NAME
0 Jammu & Kashmir 1 1 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 1 KUPWARA 1 KARNAH 1 BARAMULLA
1 Jammu & Kashmir 1 1 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 1 KUPWARA 1 KARNAH 1 BARAMULLA
2 Jammu & Kashmir 1 2 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 1 KUPWARA 2 KUPWARA 1 BARAMULLA
3 Jammu & Kashmir 1 2 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 1 KUPWARA 2 KUPWARA 1 BARAMULLA
4 Jammu & Kashmir 1 3 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 1 KUPWARA 3 LOLAB 1 BARAMULLA
5 Jammu & Kashmir 1 3 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 1 KUPWARA 3 LOLAB 1 BARAMULLA
6 Jammu & Kashmir 1 4 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 1 KUPWARA 4 HANDWARA 1 BARAMULLA
7 Jammu & Kashmir 1 4 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 1 KUPWARA 4 HANDWARA 1 BARAMULLA
8 Jammu & Kashmir 1 5 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 1 KUPWARA 5 LANGATE 1 BARAMULLA
9 Jammu & Kashmir 1 5 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 1 KUPWARA 5 LANGATE 1 BARAMULLA
10 Jammu & Kashmir 1 6 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 6 URI 1 BARAMULLA
11 Jammu & Kashmir 1 6 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 6 URI 1 BARAMULLA
12 Jammu & Kashmir 1 7 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 7 RAFIABAD 1 BARAMULLA
13 Jammu & Kashmir 1 7 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 7 RAFIABAD 1 BARAMULLA
14 Jammu & Kashmir 1 8 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 8 SOPORE 1 BARAMULLA
15 Jammu & Kashmir 1 8 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 8 SOPORE 1 BARAMULLA
16 Jammu & Kashmir 1 9 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 9 GUREZ 1 BARAMULLA
17 Jammu & Kashmir 1 9 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 9 GUREZ 1 BARAMULLA
18 Jammu & Kashmir 1 10 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 10 BANDIPORA 1 BARAMULLA
19 Jammu & Kashmir 1 10 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 10 BANDIPORA 1 BARAMULLA
20 Jammu & Kashmir 1 11 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 11 SONAWARI 1 BARAMULLA
21 Jammu & Kashmir 1 11 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 11 SONAWARI 1 BARAMULLA
22 Jammu & Kashmir 1 12 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 12 SANGRAMA 1 BARAMULLA
23 Jammu & Kashmir 1 12 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 12 SANGRAMA 1 BARAMULLA
24 Jammu & Kashmir 1 13 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 13 BARAMULA 1 BARAMULLA
25 Jammu & Kashmir 1 13 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 13 BARAMULA 1 BARAMULLA
26 Jammu & Kashmir 1 14 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 14 GULMARG 1 BARAMULLA
27 Jammu & Kashmir 1 14 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 14 GULMARG 1 BARAMULLA
28 Jammu & Kashmir 1 15 2008 12 1 2009 2008-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 15 PATTAN 1 BARAMULLA
29 Jammu & Kashmir 1 15 2014 12 1 2015 2014-12-01 1 1 JAMMU & KASHMIR 2 BARAMULA 15 PATTAN 1 BARAMULLA
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
8328 Puducherry 34 16 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 16 Orleampeth 1 PONDICHERRY
8329 Puducherry 34 16 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 16 Orleampeth 1 PONDICHERRY
8330 Puducherry 34 17 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 17 Nellithope 1 PONDICHERRY
8331 Puducherry 34 17 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 17 Nellithope 1 PONDICHERRY
8332 Puducherry 34 18 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 18 Mudaliarpet 1 PONDICHERRY
8333 Puducherry 34 18 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 18 Mudaliarpet 1 PONDICHERRY
8334 Puducherry 34 19 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 19 Ariankuppam 1 PONDICHERRY
8335 Puducherry 34 19 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 19 Ariankuppam 1 PONDICHERRY
8336 Puducherry 34 20 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 20 Manavely 1 PONDICHERRY
8337 Puducherry 34 20 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 20 Manavely 1 PONDICHERRY
8338 Puducherry 34 21 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 21 Embalam (SC) 1 PONDICHERRY
8339 Puducherry 34 21 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 21 Embalam (SC) 1 PONDICHERRY
8340 Puducherry 34 22 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 22 Nettapakkam (SC) 1 PONDICHERRY
8341 Puducherry 34 22 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 22 Nettapakkam (SC) 1 PONDICHERRY
8342 Puducherry 34 23 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 23 Bahour 1 PONDICHERRY
8343 Puducherry 34 23 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 2 PONDICHERRY 23 Bahour 1 PONDICHERRY
8344 Puducherry 34 24 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 4 KARAIKAL 24 Nedungadu (SC) 1 PONDICHERRY
8345 Puducherry 34 24 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 4 KARAIKAL 24 Nedungadu (SC) 1 PONDICHERRY
8346 Puducherry 34 25 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 4 KARAIKAL 25 Thirunallar 1 PONDICHERRY
8347 Puducherry 34 25 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 4 KARAIKAL 25 Thirunallar 1 PONDICHERRY
8348 Puducherry 34 26 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 4 KARAIKAL 26 Karaikal North 1 PONDICHERRY
8349 Puducherry 34 26 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 4 KARAIKAL 26 Karaikal North 1 PONDICHERRY
8350 Puducherry 34 27 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 4 KARAIKAL 27 Karaikal South 1 PONDICHERRY
8351 Puducherry 34 27 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 4 KARAIKAL 27 Karaikal South 1 PONDICHERRY
8352 Puducherry 34 28 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 4 KARAIKAL 28 Neravy- T.R. Pattin 1 PONDICHERRY
8353 Puducherry 34 28 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 4 KARAIKAL 28 Neravy- T.R. Pattin 1 PONDICHERRY
8354 Puducherry 34 29 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 3 MAHE 29 Mahe 1 PONDICHERRY
8355 Puducherry 34 29 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 3 MAHE 29 Mahe 1 PONDICHERRY
8356 Puducherry 34 30 2011 5 1 2011 2011-05-01 1 34 PUDUCHERRY 1 YANAM 30 Yanam 1 PONDICHERRY
8357 Puducherry 34 30 2016 5 1 2016 2016-05-01 1 34 PUDUCHERRY 1 YANAM 30 Yanam 1 PONDICHERRY

8358 rows × 17 columns

In [16]:
# Read Joining data
tojoin_acdf = gpd.read_file(os.path.join(data_folder, 'Statistics.gdb'))
tojoin_acdf = tojoin_acdf[tojoin_acdf.columns[:-1]]

# Read Emission Data
stats_folder = os.path.join(data_folder, "statistics")
stats_files = os.listdir(stats_folder)
stats_files = [file for file in stats_files if file.split('.')[-1] == 'dbf']
df_list = []
for file in stats_files:
    df = gpd.read_file(os.path.join(stats_folder, file))
    df['dyear'] = int(file.split('.')[-2].split('_')[-1])
    df_list.append(df)

#Combine Data
ems_df = pd.concat(df_list)
ems_df = pd.merge(ems_df, tojoin_acdf,  how='left', on=['uniqe_code'])
ems_df = ems_df[ems_df.columns[:-4]]
ems_df
Out[16]:
uniqe_code ZONE_CODE COUNT AREA MIN MAX RANGE MEAN STD SUM ... dyear OBJECTID ST_CODE ST_NAME DT_CODE DIST_NAME AC_NO AC_NAME PC_NO PC_NAME
0 1001-NAGALAND-Tizit 1 557 0.0557 9.000000 14.100000 5.100000 11.266248 1.235040 6275.299986 ... 1998 1.0 13.0 NAGALAND 1.0 MON 41.0 Tizit 1.0 NAGALAND
1 1002-NAGALAND-Tapi 2 305 0.0305 9.000000 13.200000 4.200000 10.881639 1.152328 3318.899997 ... 1998 1.0 13.0 NAGALAND 1.0 MON 43.0 Tapi 1.0 NAGALAND
2 1003-NAGALAND-Wakching 3 188 0.0188 10.700000 13.900000 3.200000 12.382979 0.770692 2327.999993 ... 1998 1.0 13.0 NAGALAND 1.0 MON 42.0 Wakching 1.0 NAGALAND
3 1004-NAGALAND-Tamlu 4 217 0.0217 11.200000 14.000000 2.800000 12.670046 0.707352 2749.399996 ... 1998 1.0 13.0 NAGALAND 2.0 TUENSANG 49.0 Tamlu 1.0 NAGALAND
4 1005-NAGALAND-Tuli 5 226 0.0226 13.000000 15.400000 2.400000 14.133186 0.539506 3194.099998 ... 1998 1.0 13.0 NAGALAND 3.0 MOKOKCHUNG 21.0 Tuli 1.0 NAGALAND
5 1006-NAGALAND-Phomching 6 71 0.0071 8.500000 9.300000 0.800000 8.916901 0.190615 633.099998 ... 1998 1.0 13.0 NAGALAND 1.0 MON 44.0 Phomching 1.0 NAGALAND
6 1007-NAGALAND-Mon Town 7 120 0.0120 9.700000 11.100000 1.400001 10.432500 0.266509 1251.899998 ... 1998 1.0 13.0 NAGALAND 1.0 MON 46.0 Mon Town 1.0 NAGALAND
7 1008-NAGALAND-Aboi 8 170 0.0170 10.400000 12.300000 1.900001 11.135882 0.425172 1893.100000 ... 1998 1.0 13.0 NAGALAND 1.0 MON 47.0 Aboi 1.0 NAGALAND
8 1009-NAGALAND-Alungtaki 9 314 0.0314 14.400000 15.900000 1.500000 15.174522 0.347677 4764.800000 ... 1998 1.0 13.0 NAGALAND 3.0 MOKOKCHUNG 30.0 Alungtaki 1.0 NAGALAND
9 1010-NAGALAND-Tehok 10 111 0.0111 8.900000 10.600000 1.700001 9.718018 0.493963 1078.700001 ... 1998 1.0 13.0 NAGALAND 1.0 MON 45.0 Tehok 1.0 NAGALAND
10 1011-NAGALAND-Longleng 11 231 0.0231 10.400000 12.900000 2.500000 11.546320 0.676617 2667.200001 ... 1998 1.0 13.0 NAGALAND 2.0 TUENSANG 50.0 Longleng 1.0 NAGALAND
11 1012-NAGALAND-Arkakong 12 160 0.0160 12.500000 14.200000 1.700000 13.291250 0.390094 2126.599999 ... 1998 1.0 13.0 NAGALAND 3.0 MOKOKCHUNG 22.0 Arkakong 1.0 NAGALAND
12 1013-NAGALAND-Jangpetkong 13 194 0.0194 13.700000 14.700000 1.000000 14.185052 0.238408 2751.899996 ... 1998 1.0 13.0 NAGALAND 3.0 MOKOKCHUNG 29.0 Jangpetkong 1.0 NAGALAND
13 1014-NAGALAND-Moka 14 135 0.0135 9.100000 11.000000 1.900000 10.017778 0.489575 1352.399998 ... 1998 1.0 13.0 NAGALAND 1.0 MON 48.0 Moka 1.0 NAGALAND
14 1015-NAGALAND-Bhandari 15 785 0.0785 11.900000 17.400000 5.500000 14.431083 1.266160 11328.399994 ... 1998 1.0 13.0 NAGALAND 5.0 WOKHA 40.0 Bhandari 1.0 NAGALAND
15 1016-NAGALAND-Noksen 16 206 0.0206 9.800000 12.800000 3.000000 11.245146 0.700243 2316.500000 ... 1998 1.0 13.0 NAGALAND 2.0 TUENSANG 51.0 Noksen 1.0 NAGALAND
16 1017-NAGALAND-Tobu 17 239 0.0239 8.500000 10.500000 2.000000 9.471967 0.426929 2263.800000 ... 1998 1.0 13.0 NAGALAND 2.0 TUENSANG 55.0 Tobu 1.0 NAGALAND
17 1018-NAGALAND-Angetyongpang 18 138 0.0138 11.600000 12.900000 1.299999 12.228986 0.277463 1687.599999 ... 1998 1.0 13.0 NAGALAND 3.0 MOKOKCHUNG 24.0 Angetyongpang 1.0 NAGALAND
18 1019-NAGALAND-Impur 19 130 0.0130 12.400000 13.800000 1.400001 13.126923 0.374533 1706.499999 ... 1998 1.0 13.0 NAGALAND 3.0 MOKOKCHUNG 23.0 Impur 1.0 NAGALAND
19 1020-NAGALAND-Noklak 20 318 0.0318 7.300000 9.000000 1.700000 8.202516 0.405691 2608.400002 ... 1998 1.0 13.0 NAGALAND 2.0 TUENSANG 56.0 Noklak 1.0 NAGALAND
20 1021-NAGALAND-Koridang 21 167 0.0167 12.000000 13.800000 1.800000 12.916766 0.450768 2157.099999 ... 1998 1.0 13.0 NAGALAND 3.0 MOKOKCHUNG 28.0 Koridang 1.0 NAGALAND
21 1022-NAGALAND-Longkhim Chare 22 278 0.0278 9.800000 11.900000 2.099999 10.838849 0.484658 3013.199995 ... 1998 1.0 13.0 NAGALAND 2.0 TUENSANG 52.0 Longkhim Chare 1.0 NAGALAND
22 1023-NAGALAND-Tuensang Sadar-II 23 442 0.0442 8.000000 10.600000 2.600000 9.252262 0.522920 4089.500000 ... 1998 1.0 13.0 NAGALAND 2.0 TUENSANG 54.0 Tuensang Sadar-II 1.0 NAGALAND
23 1024-NAGALAND-Monguya 24 80 0.0080 11.200000 12.500000 1.300000 11.932500 0.311759 954.600000 ... 1998 1.0 13.0 NAGALAND 3.0 MOKOKCHUNG 25.0 Monguya 1.0 NAGALAND
24 1025-NAGALAND-Mokokchung Town 25 11 0.0011 12.400000 12.800000 0.400001 12.600000 0.112815 138.600000 ... 1998 1.0 13.0 NAGALAND 3.0 MOKOKCHUNG 27.0 Mokokchung Town 1.0 NAGALAND
25 1026-NAGALAND-Aonglenden 26 34 0.0034 12.300000 13.100000 0.800000 12.667647 0.195118 430.700000 ... 1998 1.0 13.0 NAGALAND 3.0 MOKOKCHUNG 26.0 Aonglenden 1.0 NAGALAND
26 1027-NAGALAND-Tuensang Sadar-I 27 48 0.0048 9.500000 10.300000 0.800000 9.931250 0.195955 476.700001 ... 1998 1.0 13.0 NAGALAND 2.0 TUENSANG 53.0 Tuensang Sadar-I 1.0 NAGALAND
27 1028-NAGALAND-Sanis 28 300 0.0300 12.100000 14.400000 2.299999 13.060667 0.509103 3918.200000 ... 1998 1.0 13.0 NAGALAND 5.0 WOKHA 39.0 Sanis 1.0 NAGALAND
28 1029-NAGALAND-Akuluto 29 145 0.0145 11.300000 12.500000 1.200000 11.861379 0.296691 1719.900002 ... 1998 1.0 13.0 NAGALAND 4.0 ZUNHEBOTO 31.0 Akuluto 1.0 NAGALAND
29 1030-NAGALAND-Suruhuto 30 141 0.0141 9.500000 11.700000 2.200000 10.414184 0.566260 1468.400003 ... 1998 1.0 13.0 NAGALAND 4.0 ZUNHEBOTO 33.0 Suruhuto 1.0 NAGALAND
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
79428 5153-UTTAR PRADESH-Handia 4153 265 0.0265 87.500000 97.400002 9.900002 92.495472 2.209751 24511.299980 ... 2016 78.0 9.0 UTTAR PRADESH 45.0 ALLAHABAD 258.0 Handia 78.0 BHADOHI
79429 5154-UTTAR PRADESH-Allahabad South 4154 27 0.0027 94.300003 95.400002 1.099998 95.137037 0.235935 2568.700005 ... 2016 52.0 9.0 UTTAR PRADESH 45.0 ALLAHABAD 263.0 Allahabad South 52.0 ALLAHABAD
79430 5155-UTTAR PRADESH-Shivpur 4155 243 0.0243 91.500000 95.300003 3.800003 93.391770 0.899116 22694.200020 ... 2016 76.0 9.0 UTTAR PRADESH 67.0 VARANASI 386.0 Shivpur 76.0 CHANDAULI
79431 5156-UTTAR PRADESH-Gyanpur 4156 312 0.0312 84.900002 97.500000 12.599998 91.344872 2.842530 28499.600021 ... 2016 78.0 9.0 UTTAR PRADESH 68.0 SANT RAVIDAS NAGAR * 393.0 Gyanpur 78.0 BHADOHI
79432 5157-UTTAR PRADESH-Karachhana 4157 328 0.0328 82.199997 95.400002 13.200005 88.157012 3.533672 28915.500030 ... 2016 52.0 9.0 UTTAR PRADESH 45.0 ALLAHABAD 260.0 Karachhana 52.0 ALLAHABAD
79433 5158-UTTAR PRADESH-Naraini (SC) 4158 1072 0.1072 66.800003 84.000000 17.199997 75.631063 4.332433 81076.500023 ... 2016 48.0 9.0 UTTAR PRADESH 40.0 BANDA 234.0 Naraini (SC) 48.0 BANDA
79434 5159-UTTAR PRADESH-Sevapuri 4159 247 0.0247 88.199997 97.400002 9.200005 93.217814 2.654643 23024.799995 ... 2016 77.0 9.0 UTTAR PRADESH 67.0 VARANASI 391.0 Sevapuri 77.0 VARANASI
79435 5160-UTTAR PRADESH-Manikpur 4160 1757 0.1757 64.900002 89.099998 24.199997 75.592886 6.271292 132816.700180 ... 2016 48.0 9.0 UTTAR PRADESH 41.0 CHITRAKOOT * 237.0 Manikpur 48.0 BANDA
79436 5161-UTTAR PRADESH-Rohaniya 4161 205 0.0205 88.300003 96.900002 8.599998 91.459024 2.320425 18749.100021 ... 2016 77.0 9.0 UTTAR PRADESH 67.0 VARANASI 387.0 Rohaniya 77.0 VARANASI
79437 5162-UTTAR PRADESH-Varanasi North 4162 39 0.0039 93.400002 95.199997 1.799995 94.087180 0.465298 3669.400002 ... 2016 77.0 9.0 UTTAR PRADESH 67.0 VARANASI 388.0 Varanasi North 77.0 VARANASI
79438 5163-UTTAR PRADESH-Aurai (SC) 4163 197 0.0197 88.800003 93.699997 4.899994 91.857360 0.836362 18095.900009 ... 2016 78.0 9.0 UTTAR PRADESH 68.0 SANT RAVIDAS NAGAR * 394.0 Aurai (SC) 78.0 BHADOHI
79439 5164-UTTAR PRADESH-Bara (SC) 4164 845 0.0845 77.400002 94.000000 16.599998 85.057396 3.795835 71873.499947 ... 2016 52.0 9.0 UTTAR PRADESH 45.0 ALLAHABAD 264.0 Bara (SC) 52.0 ALLAHABAD
79440 5165-UTTAR PRADESH-Varanasi South 4165 6 0.0006 92.900002 93.400002 0.500000 93.183332 0.146249 559.099991 ... 2016 77.0 9.0 UTTAR PRADESH 67.0 VARANASI 389.0 Varanasi South 77.0 VARANASI
79441 5166-UTTAR PRADESH-Mughalsarai 4166 226 0.0226 84.500000 93.300003 8.800003 87.972566 2.400857 19881.799988 ... 2016 76.0 9.0 UTTAR PRADESH 66.0 CHANDAULI * 380.0 Mughalsarai 76.0 CHANDAULI
79442 5167-UTTAR PRADESH-Meja 4167 449 0.0449 76.500000 90.800003 14.300003 83.457016 3.176325 37472.200012 ... 2016 52.0 9.0 UTTAR PRADESH 45.0 ALLAHABAD 259.0 Meja 52.0 ALLAHABAD
79443 5168-UTTAR PRADESH-Varanasi Cantt. 4168 37 0.0037 89.199997 93.199997 4.000000 91.567567 1.226521 3387.999985 ... 2016 77.0 9.0 UTTAR PRADESH 67.0 VARANASI 390.0 Varanasi Cantt. 77.0 VARANASI
79444 5169-UTTAR PRADESH-Majhawan 4169 616 0.0616 70.300003 92.400002 22.099998 83.031494 5.841779 51147.400009 ... 2016 79.0 9.0 UTTAR PRADESH 69.0 MIRZAPUR 397.0 Majhawan 79.0 MIRZAPUR
79445 5170-UTTAR PRADESH-Chhanbey (SC) 4170 1341 0.1341 60.500000 89.800003 29.300003 70.435496 6.479831 94453.999912 ... 2016 79.0 9.0 UTTAR PRADESH 69.0 MIRZAPUR 395.0 Chhanbey (SC) 79.0 MIRZAPUR
79446 5171-UTTAR PRADESH-Lalitpur 4171 1914 0.1914 54.500000 67.199997 12.699997 60.033438 2.771349 114903.999950 ... 2016 46.0 9.0 UTTAR PRADESH 37.0 LALITPUR 226.0 Lalitpur 46.0 JHANSI
79447 5172-UTTAR PRADESH-Chakia (SC) 4172 1194 0.1194 66.099998 87.099998 21.000000 75.069012 6.048634 89632.400139 ... 2016 80.0 9.0 UTTAR PRADESH 66.0 CHANDAULI * 383.0 Chakia (SC) 80.0 ROBERTSGANJ (SC)
79448 5173-UTTAR PRADESH-Mirzapur 4173 246 0.0246 77.800003 91.000000 13.199997 85.363415 3.421459 20999.400047 ... 2016 79.0 9.0 UTTAR PRADESH 69.0 MIRZAPUR 396.0 Mirzapur 79.0 MIRZAPUR
79449 5174-UTTAR PRADESH-Chunar 4174 372 0.0372 81.800003 89.000000 7.199997 86.673656 1.548362 32242.600060 ... 2016 79.0 9.0 UTTAR PRADESH 69.0 MIRZAPUR 398.0 Chunar 79.0 MIRZAPUR
79450 5175-UTTAR PRADESH-Koraon (SC) 4175 1085 0.1085 66.400002 83.300003 16.900002 76.367004 3.509177 82858.199844 ... 2016 52.0 9.0 UTTAR PRADESH 45.0 ALLAHABAD 265.0 Koraon (SC) 52.0 ALLAHABAD
79451 5176-UTTAR PRADESH-Marihan 4176 1454 0.1454 65.699997 87.099998 21.400002 73.007772 5.028467 106153.300194 ... 2016 79.0 9.0 UTTAR PRADESH 69.0 MIRZAPUR 399.0 Marihan 79.0 MIRZAPUR
79452 5177-UTTAR PRADESH-Mehroni (SC) 4177 2564 0.2564 53.299999 60.900002 7.600002 55.900429 1.762702 143328.700089 ... 2016 46.0 9.0 UTTAR PRADESH 37.0 LALITPUR 227.0 Mehroni (SC) 46.0 JHANSI
79453 5178-UTTAR PRADESH-Ghorawal 4178 1049 0.1049 61.799999 70.599998 8.799999 66.125834 2.174186 69366.000088 ... 2016 80.0 9.0 UTTAR PRADESH 70.0 SONBHADRA 400.0 Ghorawal 80.0 ROBERTSGANJ (SC)
79454 5179-UTTAR PRADESH-Robertsganj 4179 1610 0.1610 59.500000 68.400002 8.900002 63.220373 1.854917 101784.800014 ... 2016 80.0 9.0 UTTAR PRADESH 70.0 SONBHADRA 401.0 Robertsganj 80.0 ROBERTSGANJ (SC)
79455 5180-UTTAR PRADESH-Obra 4180 1360 0.1360 56.200001 67.199997 10.999996 61.996324 2.103757 84315.000008 ... 2016 80.0 9.0 UTTAR PRADESH 70.0 SONBHADRA 402.0 Obra 80.0 ROBERTSGANJ (SC)
79456 5181-UTTAR PRADESH-Duddhi (SC) 4181 1828 0.1828 53.000000 63.000000 10.000000 57.694365 2.745772 105465.299950 ... 2016 80.0 9.0 UTTAR PRADESH 70.0 SONBHADRA 403.0 Duddhi (SC) 80.0 ROBERTSGANJ (SC)
79457 5182-TAMIL NADU-Nannilam 4182 501 0.0501 28.900000 31.100000 2.200001 30.079641 0.531056 15069.900024 ... 2016 29.0 33.0 TAMIL NADU 20.0 THIRUVARUR 169.0 Nannilam 29.0 NAGAPATTINAM (SC)

79458 rows × 21 columns

In [23]:
variables = ['MEAN']
for variable in variables:
    ems_df[variable] = ems_df[variable].astype(float)
df_list = []
#Get all variables
def get_ac_variables(row):
    #print(pd.DataFrame(row).T)
    next_elect = acdf[(acdf['state_code'] == row['state_code']) & (acdf['constituency_no'] == row['constituency_no']) & (acdf['datetime'] > row['datetime'])][0:1]
    if len(next_elect) < 1:
        next_elect = pd.DataFrame(row).T
        next_elect['dyear'] = next_elect['dyear'] + 5
        next_elect['datetime'] = next_elect['datetime'] + pd.DateOffset(years=5)
    #print(next_elect)
    delta_year = math.floor((next_elect['datetime'].dt.year - row['datetime'].year)/5)
    if not delta_year:
        delta_year = 1
    #print(delta_year)
    df1 = ems_df[(ems_df['ST_CODE'] == row['state_code']) & (ems_df['AC_NO'] == row['constituency_no']) & (ems_df['dyear'] >= row['dyear']) & (ems_df['dyear'] < next_elect['dyear'].values[0])]
    #print(df1)
    #print(row['dyear'])
    df = pd.DataFrame(row).T
    for variable in variables:
        df[variable+'1'] = df1[df1['dyear'] == (row['dyear'] + delta_year-1)][variable].mean()
        df[variable+'2'] = df1[(df1['dyear'] == (row['dyear'] + delta_year+0))][variable].mean()
        df[variable+'3'] = df1[(df1['dyear'] == (row['dyear'] + delta_year+1))][variable].mean()
        df[variable+'4'] = df1[(df1['dyear']== (row['dyear'] + delta_year+2))][variable].mean()
        df[variable+'5'] = df1[df1['dyear'] > (row['dyear'] + delta_year+2)][variable].mean()
        df[variable+'_sum'] = df1[variable].sum()
        df[variable+'_mean'] = df1[variable].mean()
    df_list.append(df)
#Apply This Function
acdf.apply(get_ac_variables, axis=1)
df = pd.concat(df_list)
df
Out[23]:
state_name state_code constituency_no year month day dyear datetime OBJECTID ST_CODE ... AC_NAME PC_NO PC_NAME MEAN1 MEAN2 MEAN3 MEAN4 MEAN5 MEAN_sum MEAN_mean
0 Jammu & Kashmir 1 1 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... KARNAH 1 BARAMULLA 28.728922 27.670898 27.286228 31.488683 31.736347 178.647425 29.774571
1 Jammu & Kashmir 1 1 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... KARNAH 1 BARAMULLA 33.375629 35.200359 NaN NaN NaN 68.575988 34.287994
2 Jammu & Kashmir 1 2 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... KUPWARA 1 BARAMULLA 29.064372 27.114170 27.120243 32.186235 31.629555 178.744129 29.790688
3 Jammu & Kashmir 1 2 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... KUPWARA 1 BARAMULLA 34.297571 36.157490 NaN NaN NaN 70.455061 35.227530
4 Jammu & Kashmir 1 3 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... LOLAB 1 BARAMULLA 26.973203 24.754811 23.704263 29.710597 29.035627 163.214129 27.202355
5 Jammu & Kashmir 1 3 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... LOLAB 1 BARAMULLA 31.029963 32.287820 NaN NaN NaN 63.317783 31.658892
6 Jammu & Kashmir 1 4 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... HANDWARA 1 BARAMULLA 30.693830 29.154043 28.713830 32.317021 33.597766 188.074255 31.345709
7 Jammu & Kashmir 1 4 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... HANDWARA 1 BARAMULLA 36.368298 38.884468 NaN NaN NaN 75.252766 37.626383
8 Jammu & Kashmir 1 5 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... LANGATE 1 BARAMULLA 32.007775 30.627614 29.956836 32.156837 35.343700 195.436461 32.572744
9 Jammu & Kashmir 1 5 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... LANGATE 1 BARAMULLA 37.639678 40.544236 NaN NaN NaN 78.183914 39.091957
10 Jammu & Kashmir 1 6 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... URI 1 BARAMULLA 32.097314 32.011125 31.207800 31.927110 35.968798 199.180946 33.196824
11 Jammu & Kashmir 1 6 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... URI 1 BARAMULLA 37.017519 40.570205 NaN NaN NaN 77.587724 38.793862
12 Jammu & Kashmir 1 7 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... RAFIABAD 1 BARAMULLA 33.516447 32.420724 31.946053 32.907566 37.647368 206.085526 34.347588
13 Jammu & Kashmir 1 7 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... RAFIABAD 1 BARAMULLA 39.637171 42.959539 NaN NaN NaN 82.596710 41.298355
14 Jammu & Kashmir 1 8 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... SOPORE 1 BARAMULLA 33.392105 32.172632 31.683684 33.276316 37.816053 206.156842 34.359474
15 Jammu & Kashmir 1 8 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... SOPORE 1 BARAMULLA 40.419474 42.644211 NaN NaN NaN 83.063684 41.531842
16 Jammu & Kashmir 1 9 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... GUREZ 1 BARAMULLA 25.653518 22.475719 21.088900 26.132210 26.988900 149.328147 24.888024
17 Jammu & Kashmir 1 9 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... GUREZ 1 BARAMULLA 28.158573 29.545689 NaN NaN NaN 57.704262 28.852131
18 Jammu & Kashmir 1 10 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... BANDIPORA 1 BARAMULLA 29.970232 26.956781 25.694708 29.988644 32.297189 177.204741 29.534123
19 Jammu & Kashmir 1 10 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... BANDIPORA 1 BARAMULLA 33.700441 35.412238 NaN NaN NaN 69.112679 34.556340
20 Jammu & Kashmir 1 11 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... SONAWARI 1 BARAMULLA 34.007317 32.366202 31.368293 33.247038 38.514460 208.017770 34.669628
21 Jammu & Kashmir 1 11 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... SONAWARI 1 BARAMULLA 40.255401 42.948084 NaN NaN NaN 83.203484 41.601742
22 Jammu & Kashmir 1 12 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... SANGRAMA 1 BARAMULLA 35.264286 34.467143 33.824286 34.131429 40.502857 218.692857 36.448810
23 Jammu & Kashmir 1 12 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... SANGRAMA 1 BARAMULLA 41.961429 45.287857 NaN NaN NaN 87.249286 43.624643
24 Jammu & Kashmir 1 13 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... BARAMULA 1 BARAMULLA 33.879343 33.680282 32.759155 33.192019 38.618310 210.747418 35.124570
25 Jammu & Kashmir 1 13 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... BARAMULA 1 BARAMULLA 40.338967 43.624413 NaN NaN NaN 83.963380 41.981690
26 Jammu & Kashmir 1 14 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... GULMARG 1 BARAMULLA 35.057895 34.676201 33.484439 33.971625 40.063387 217.316933 36.219489
27 Jammu & Kashmir 1 14 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... GULMARG 1 BARAMULLA 41.279405 44.318993 NaN NaN NaN 85.598398 42.799199
28 Jammu & Kashmir 1 15 2008 12 1 2009 2008-12-01 00:00:00 1 1 ... PATTAN 1 BARAMULLA 35.604630 34.621296 33.767592 34.556481 41.078704 220.707407 36.784568
29 Jammu & Kashmir 1 15 2014 12 1 2015 2014-12-01 00:00:00 1 1 ... PATTAN 1 BARAMULLA 42.929630 45.469444 NaN NaN NaN 88.399074 44.199537
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
8328 Puducherry 34 16 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Orleampeth 1 PONDICHERRY 29.299999 26.200001 31.500000 35.200001 29.100000 151.300001 30.260000
8329 Puducherry 34 16 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Orleampeth 1 PONDICHERRY 32.099998 NaN NaN NaN NaN 32.099998 32.099998
8330 Puducherry 34 17 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Nellithope 1 PONDICHERRY 29.299999 26.299999 31.400000 35.400002 29.200001 151.600000 30.320000
8331 Puducherry 34 17 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Nellithope 1 PONDICHERRY 32.200001 NaN NaN NaN NaN 32.200001 32.200001
8332 Puducherry 34 18 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Mudaliarpet 1 PONDICHERRY 29.366666 26.333333 31.600000 35.600000 29.400000 152.299999 30.460000
8333 Puducherry 34 18 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Mudaliarpet 1 PONDICHERRY 32.233334 NaN NaN NaN NaN 32.233334 32.233334
8334 Puducherry 34 19 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Ariankuppam 1 PONDICHERRY 29.400000 26.150000 31.600000 35.466667 29.283333 151.900001 30.380000
8335 Puducherry 34 19 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Ariankuppam 1 PONDICHERRY 32.133333 NaN NaN NaN NaN 32.133333 32.133333
8336 Puducherry 34 20 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Manavely 1 PONDICHERRY 29.505263 26.342105 31.831579 35.926316 29.494737 153.100000 30.620000
8337 Puducherry 34 20 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Manavely 1 PONDICHERRY 32.421053 NaN NaN NaN NaN 32.421053 32.421053
8338 Puducherry 34 21 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Embalam (SC) 1 PONDICHERRY 29.650000 26.870833 32.095833 36.887500 29.804167 155.308333 31.061667
8339 Puducherry 34 21 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Embalam (SC) 1 PONDICHERRY 32.787500 NaN NaN NaN NaN 32.787500 32.787500
8340 Puducherry 34 22 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Nettapakkam (SC) 1 PONDICHERRY 30.486364 27.618182 32.886364 38.104545 30.904546 160.000001 32.000000
8341 Puducherry 34 22 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Nettapakkam (SC) 1 PONDICHERRY 33.427273 NaN NaN NaN NaN 33.427273 33.427273
8342 Puducherry 34 23 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Bahour 1 PONDICHERRY 29.662963 26.518518 31.974074 37.225926 29.492592 154.874074 30.974815
8343 Puducherry 34 23 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Bahour 1 PONDICHERRY 32.607407 NaN NaN NaN NaN 32.607407 32.607407
8344 Puducherry 34 24 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Nedungadu (SC) 1 PONDICHERRY 24.226316 23.694737 28.939474 33.386842 26.765789 137.013158 27.402632
8345 Puducherry 34 24 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Nedungadu (SC) 1 PONDICHERRY 28.765789 NaN NaN NaN NaN 28.765789 28.765789
8346 Puducherry 34 25 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Thirunallar 1 PONDICHERRY 24.247368 23.850000 29.192105 34.057895 27.018421 138.365789 27.673158
8347 Puducherry 34 25 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Thirunallar 1 PONDICHERRY 28.781579 NaN NaN NaN NaN 28.781579 28.781579
8348 Puducherry 34 26 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Karaikal North 1 PONDICHERRY 23.613333 23.526667 28.420000 32.320000 26.813333 134.693333 26.938667
8349 Puducherry 34 26 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Karaikal North 1 PONDICHERRY 28.326666 NaN NaN NaN NaN 28.326666 28.326666
8350 Puducherry 34 27 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Karaikal South 1 PONDICHERRY 23.554546 23.572728 28.372727 32.154546 26.772727 134.427273 26.885455
8351 Puducherry 34 27 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Karaikal South 1 PONDICHERRY 28.190909 NaN NaN NaN NaN 28.190909 28.190909
8352 Puducherry 34 28 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Neravy- T.R. Pattin 1 PONDICHERRY 23.280000 23.551429 28.148571 31.537143 26.582857 133.100000 26.620000
8353 Puducherry 34 28 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Neravy- T.R. Pattin 1 PONDICHERRY 27.820000 NaN NaN NaN NaN 27.820000 27.820000
8354 Puducherry 34 29 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Mahe 1 PONDICHERRY 19.800000 21.828571 24.014286 24.485714 23.371428 113.499999 22.700000
8355 Puducherry 34 29 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Mahe 1 PONDICHERRY 27.100000 NaN NaN NaN NaN 27.100000 27.100000
8356 Puducherry 34 30 2011 5 1 2011 2011-05-01 00:00:00 1 34 ... Yanam 1 PONDICHERRY 30.985185 28.437037 36.100000 38.292593 36.592593 170.407408 34.081482
8357 Puducherry 34 30 2016 5 1 2016 2016-05-01 00:00:00 1 34 ... Yanam 1 PONDICHERRY 35.344444 NaN NaN NaN NaN 35.344444 35.344444

8358 rows × 24 columns

In [25]:
# Output to CSV
df.to_csv(os.path.join(output_folder, "Assembly_Constituencies_Variables_Categories.csv"), encoding='utf-8', index=False)
In [27]:
 
In [ ]: