pandas.DataFrame.mergeで、'市区町村コード'をキーとして結合できます。
それらしきデータでやってみましたが、数秒しかかかりませんでした。
参考:
pandasの使い方(merge、join、concat編)
国勢調査 / 平成27年国勢調査 / 人口等基本集計(男女・年齢・配偶関係,世帯の構成,住居の状態など) 全国結果
土地総合情報システム
Python
1import pandas as pd
2dfA = pd.read_csv('area.csv',encoding='cp932',usecols=['市区町村コード','人口密度'])
3dfD = pd.read_csv('data.csv',encoding='cp932')
4df = pd.merge(dfD, dfA, on='市区町村コード', how='left')
5df.to_csv('ret.csv',encoding='cp932',index=False)
6print(df.info())
7"""
8<class 'pandas.core.frame.DataFrame'>
9Int64Index: 32453 entries, 0 to 32452
10Data columns (total 30 columns):
11種類 32453 non-null object
12地域 22214 non-null object
13市区町村コード 32453 non-null int64
14都道府県名 32453 non-null object
15市区町村名 32453 non-null object
16地区名 32450 non-null object
17最寄駅:名称 28631 non-null object
18最寄駅:距離(分) 28608 non-null object
19取引価格(総額) 32453 non-null int64
20坪単価 10012 non-null float64
21間取り 6367 non-null object
22面積(㎡) 32453 non-null object
23取引価格(㎡単価) 10012 non-null float64
24土地の形状 22210 non-null object
25間口 20296 non-null object
26延床面積(㎡) 11522 non-null object
27建築年 17416 non-null object
28建物の構造 17147 non-null object
29用途 14726 non-null object
30今後の利用目的 23119 non-null object
31前面道路:方位 22214 non-null object
32前面道路:種類 21762 non-null object
33前面道路:幅員(m) 21455 non-null float64
34都市計画 28603 non-null object
35建ぺい率(%) 27437 non-null float64
36容積率(%) 27437 non-null float64
37取引時点 32453 non-null object
38改装 5952 non-null object
39取引の事情等 1696 non-null object
40人口密度 32441 non-null float64
41dtypes: float64(6), int64(2), object(22)
42memory usage: 7.7+ MB
43None
44"""