【发布时间】:2022-12-06 21:21:21
【问题描述】:
我有一个数据框如下:
arrays = [np.array(["berlin", "berlin", "paris", "paris", "rome", "rome", "seville", "seville"]),
np.array(["one", "two", "one", "two", "one", "two", "one", "two"])]
df = pd.DataFrame(np.random.randn(8, 4), index=arrays, columns = ['mike','ana','manu','analia'])
它在行中有一个多索引。 我想将该 DF 转换为另一个在列中也有 multindex 的 DF。
该功能可以概括为:
def sortit(colname):
if colname.startswith('m'):
return 'm'
elif colname.startswith('m'):
return 'a'
预期输出如下:
arrays = [np.array(["berlin", "berlin", "paris", "paris", "rome", "rome", "seville", "seville"]),
np.array(["one", "two", "one", "two", "one", "two", "one", "two"])]
tuples_i = list(zip(*arrays))
index_rows = pd.MultiIndex.from_tuples(tuples_i, names=["city", "number"])
arrays2 = [np.array(["m","m", "a","a"]),
np.array(['mike','manu','ana','analia'])]
tuples_c = list(zip(*arrays2))
print(tuples)
index_columns = pd.MultiIndex.from_tuples(tuples_c, names=["department", "name"])
df = pd.DataFrame(np.random.randn(8, 4), index=index_rows, columns = index_columns)
df
两个重要的注意事项。
我的起点是在行中具有多索引而在列中具有非多索引的数据框。我无法改变这一点。
这里说明每个名称(列名)属于哪个多索引的方法是一个简单的方法,例如,实际情况是该函数更加复杂和耗时,这就是为什么我想创建一次多级列索引以便以后更快地进行查询。
【问题讨论】:
标签: python pandas multi-index