python - 合并多索引 Pandas 数据框
问题描述
我有三个多索引 Pandas 数据框 -
df1 = {('parity', np.nan): {('20194', 1990): 0.3333333333333333,
('22204', 1990): 0.0,
('24060', 1990): 0.3333333333333333},
('parity', 0.0): {('20194', 1990): 0.0,
('22204', 1990): 0.0,
('24060', 1990): 0.3333333333333333},
('parity', 1.0): {('20194', 1990): 0.3333333333333333,
('22204', 1990): 1.0,
('24060', 1990): 0.0},
('parity', 2.0): {('20194', 1990): 0.3333333333333333,
('22204', 1990): 0.0,
('24060', 1990): 0.3333333333333333},
('education', 0.0): {('20194', 1990): 0.3333333333333333,
('22204', 1990): 0.6666666666666666,
('24060', 1990): 0.6666666666666666},
('education', 1.0): {('20194', 1990): 0.6666666666666666,
('22204', 1990): 0.3333333333333333,
('24060', 1990): 0.3333333333333333}}
df1 = pd.DataFrame(data = df1)
df2 = {('parity', 'zip'): {0: '20194', 1: '22204', 2: '24060'},
('parity', 'year'): {0: 1990, 1: 1990, 2: 1990},
('parity', 'parity'): {0: 1.5, 1: 1.0, 2: 1.0}}
df2 = pd.DataFrame(data = df2)
df3 = {'parity': {('20194', 1990): 1.5, ('22204', 1990): 1.0, ('24060', 1990): 1.0},
'education': {('20194', 1990): 0.6666666666666666,
('22204', 1990): 0.3333333333333333,
('24060', 1990): 0.3333333333333333}}
df3 = pd.DataFrame(data = df3)
解决方案
concat
与MultiIndex
级别zip
和year
索引以及列中的 2 个级别一起使用MultiIndex
:
#convert columns to MultiIndex in index
df2 = df2.set_index([('parity','zip'),('parity','year')])
#created new MultiIndex in columns
df3.columns = pd.MultiIndex.from_product([df3.columns, ['new']])
df = pd.concat([df1, df2, df3],axis=1).rename_axis(['zip','year'])
print (df)
parity education parity \
NaN 0.0 1.0 2.0 0.0 1.0 parity
zip year
20194 1990 0.333333 0.000000 0.333333 0.333333 0.333333 0.666667 1.5
22204 1990 0.000000 0.000000 1.000000 0.000000 0.666667 0.333333 1.0
24060 1990 0.333333 0.333333 0.000000 0.333333 0.666667 0.333333 1.0
education
new new
zip year
20194 1990 1.5 0.666667
22204 1990 1.0 0.333333
24060 1990 1.0 0.333333
推荐阅读
- java - 构建一个只有 maven 依赖类的 jar 文件
- compiler-construction - 如何从代码段生成后缀符号?
- sql-server - 如何提取用分号分隔的数据
- java - 新语言插件 SonarQube 的解析器
- java - SpringBoot Jar 无法加载 TrueType 字体
- jekyll - 强制 Jekyll 停止使用标签构建?
- php - 日期时间可用性在 PHP 中显示错误的结果
- xamarin.forms - Xamarin Forms UWP:对“Assembly”类型的引用声称它在“System.Runtime”中定义,但找不到
- javascript - 用 JQuerys 替换的 Javascript 子字符串包含选择器
- python - 如何访问具有空格名称的对象属性