C(city) expands to dummies. drop_first is the default Treatment contrast — one city is the baseline.
Goal
Print dummy params with Nairobi as baseline.
import pandas as pd
import statsmodels.formula.api as smf
df = pd.DataFrame({'city': ['Nairobi', 'Mombasa', 'Kisumu', 'Nairobi', 'Mombasa', 'Kisumu'], 'y': [10, 20, 12, 11, 22, 13]})
print(smf.ols('y ~ C(city)', data=df).fit().params.round(3).to_dict())import pandas as pd
print(pd.get_dummies(['Nairobi', 'Mombasa', 'Nairobi'], drop_first=True))import pandas as pd
import statsmodels.formula.api as smf
df = pd.DataFrame({'city': ['Nairobi'] * 4 + ['Mombasa'] * 4, 'y': [1, 2, 2, 1, 8, 9, 8, 10]})
print(smf.ols('y ~ C(city)', data=df).fit().pvalues.round(4).to_dict())import pandas as pd
df = pd.DataFrame({'city': ['Nairobi', 'Mombasa', 'Kisumu']})
print(pd.get_dummies(df['city'], drop_first=True).to_string())