Skip to content

Instantly share code, notes, and snippets.

@BOVAGE
Last active May 1, 2025 15:38
Show Gist options
  • Save BOVAGE/182793ae64df18b6fa8725f85bb8ea5b to your computer and use it in GitHub Desktop.
Save BOVAGE/182793ae64df18b6fa8725f85bb8ea5b to your computer and use it in GitHub Desktop.
List of all Nigerian States with their Senatorial Districts
{
"ABIA": [
"ABIA NORTH",
"ABIA CENTRAL",
"ABIA SOUTH"
],
"AKWA IBOM": [
"AKWA IBOM NORTH EAST",
"AKWA IBOM NORTH WEST",
"AKWA IBOM SOUTH"
],
"ADAMAWA": [
"ADAMAWA NORTH",
"ADAMAWA SOUTH",
"ADAMAWA CENTRAL"
],
"ANAMBRA": [
"ANAMBRA NORTH",
"ANAMBRA CENTRAL",
"ANAMBRA SOUTH"
],
"BAUCHI": [
"BAUCHI SOUTH",
"BAUCHI CENTRAL",
"BAUCHI NORTH"
],
"BAYELSA": [
"BAYELSA EAST",
"BAYELSA CENTRAL",
"BAYELSA WEST"
],
"BENUE": [
"BENUE NORTH EAST",
"BENUE NORTH WEST",
"BENUE SOUTH"
],
"BORNO": [
"BORNO NORTH",
"BORNO CENTRAL",
"BORNO SOUTH"
],
"CROSS RIVER": [
"CROSS RIVER NORTH",
"CROSS RIVER CENTRAL",
"CROSS RIVER SOUTH"
],
"DELTA": [
"DELTA CENTRAL",
"DELTA NORTH",
"DELTA SOUTH"
],
"EBONYI": [
"EBONYI NORTH",
"EBONYI CENTRAL",
"EBONYI SOUTH"
],
"EDO": [
"EDO CENTRAL",
"EDO NORTH",
"EDO SOUTH"
],
"EKITI": [
"EKITI NORTH",
"EKITI CENTRAL",
"EKITI SOUTH"
],
"ENUGU": [
"ENUGU EAST",
"ENUGU WEST",
"ENUGU NORTH"
],
"GOMBE": [
"GOMBE CENTRAL",
"GOMBE SOUTH",
"GOMBE NORTH"
],
"IMO": [
"IMO EAST",
"IMO WEST",
"IMO NORTH"
],
"JIGAWA": [
"JIGAWA SOUTH - WEST",
"JIGAWA NORTH - EAST",
"JIGAWA NORTH - WEST"
],
"KADUNA": [
"KADUNA NORTH",
"KADUNA CENTRAL",
"KADUNA SOUTH"
],
"KANO": [
"KANO CENTRAL",
"KANO NORTH",
"KANO SOUTH"
],
"KATSINA": [
"KATSINA NORTH",
"KATSINA SOUTH",
"KATSINA CENTRAL"
],
"KEBBI": [
"KEBBI NORTH",
"KEBBI CENTRAL",
"KEBBI SOUTH"
],
"KOGI": [
"KOGI CENTRAL",
"KOGI EAST",
"KOGI WEST"
],
"KWARA": [
"KWARA NORTH",
"KWARA CENTRAL",
"KWARA SOUTH"
],
"LAGOS": [
"LAGOS CENTRAL",
"LAGOS EAST",
"LAGOS WEST"
],
"NASSARAWA": [
"NASSARAWA NORTH",
"NASSARAWA WEST",
"NASSARAWA SOUTH"
],
"NIGER": [
"NIGER EAST",
"NIGER NORTH",
"NIGER SOUTH"
],
"OGUN": [
"OGUN CENTRAL",
"OGUN EAST",
"OGUN WEST"
],
"ONDO": [
"ONDO NORTH",
"ONDO CENTRAL",
"ONDO SOUTH"
],
"OSUN": [
"OSUN CENTRAL",
"OSUN EAST",
"OSUN WEST"
],
"OYO": [
"OYO CENTRAL",
"OYO NORTH",
"OYO SOUTH"
],
"PLATEAU": [
"PLATEAU SOUTH",
"PLATEAU CENTRAL",
"PLATEAU NORTH"
],
"RIVERS": [
"RIVERS EAST",
"RIVERS SOUTH EAST",
"RIVERS WEST"
],
"SOKOTO": [
"SOKOTO EAST",
"SOKOTO NORTH",
"SOKOTO SOUTH"
],
"TARABA": [
"TARABA SOUTH",
"TARABA CENTRAL",
"TARABA NORTH"
],
"YOBE": [
"YOBE EAST",
"YOBE NORTH",
"YOBE SOUTH"
],
"ZAMFARA": [
"ZAMFARA NORTH",
"ZAMFARA CENTRAL",
"ZAMFARA WEST"
],
"FCT": [
"FEDERAL CAPITAL TERRITORY"
]
}
@BOVAGE
Copy link
Author

BOVAGE commented Apr 25, 2025

🗳️ Nigerian Senatorial Districts Parser

import pandas as pd
import json

pdf = pd.read_excel('sd.xls')


def get_state(row):
    for col in row:
        if str(col) != "nan":
            return col.strip()


results = []
results2 = {}
state = ""
for index, row in pdf.iterrows():
    if all(map(lambda x: str(x) == "nan", row.values)):
        continue
    if row.values[0] == "S/N":
        continue
    if not isinstance(row.values[0], int):
        state = get_state(row.values)
        continue
    results2[state] = results2.get(state, []) + [row.values[1].strip()]
    results.append(list(row.values))
    print(f"Row {index}: {row.values}")

print("Results: ", len(results))
print("Results2: ", len(results2))
print("Results2: ", results2)

with open("results.json", "w") as f:
    f.write(json.dumps(results2, indent=4))

This script parses a .xls file from INEC containing Nigeria's 109 Senatorial Districts and groups them by state into a dictionary format.

Data Source: An Excel file from the INEC website

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment