【发布时间】:2018-06-12 08:46:35
【问题描述】:
我有一个包含一些经济和社会指标的多索引数据框 这段代码可以生成一个示例数据框
import pandas as pd
import numpy as np
arrays = [['USA', 'USA', 'Egypt', 'Egypt', 'U.S.A.', 'U.S.A.', 'ARE, eg', 'ARE, eg', 'United States', 'France', 'France', 'France'],
[1950, 1980,1980, 2010, 2010, 1990, 1960, 1990, 2015, 1980, 1995, 2010]]
tuples = list(zip(*arrays))
index2 = pd.MultiIndex.from_tuples(list(zip(*arrays)), names=['Country', 'Year'])
cols= ['ind1', 'ind2', 'ind3', 'ind4']
df = pd.DataFrame(np.random.randn(12, 4), index=index2, columns=cols)
df.iloc[1::4,0] = np.nan; df.iloc[2::4,1] = np.nan; df.iloc[::3,2] = np.nan; df.iloc[1::3,3] = np.nan
df
这是一个示例输出:
问题在于数据帧索引中包含许多类似拼写错误的键。例如,美国输入一次为 USA、U.S.A.、US 或 United States 等。 我想根据包含可能名称的列表合并这些组,其中列的值被合并(如果重复则作为平均值)并排序。
new_names={'USA':['USA', 'U.S.A.', 'US', 'United States'],
'Egypt': ['Egypt', 'ARE', 'Egypt, the Arab Republic of', 'ARE, eg']}
如何在这个多索引 pandas 数据框中有效地执行此合并?
【问题讨论】:
标签: python pandas sorting merge