使用分层索引拆分数据框

时间:2019-07-08 09:17:05

标签: pandas dataframe indexing split

我有一个带有分层索引的大型数据框(下面的代码中提供了一个简单/格式示例)。我想设置一种循环/自动方式,将数据帧分为每个唯一索引值的子集,即下面的编码示例中的dfa,dfb,dfc等并存储在列表中。

我尝试了以下方法,但不幸的是没有成功。任何帮助表示赞赏!

data = pd.Series(np.random.randn(9), index=[['a', 'a', 'a', 'b', 
'b', 'c', 'c', 'd', 'd'], [1, 2, 3, 1, 2, 1, 2, 2, 3]])

split = []
for value in data.index.unique():
    split.append(data[data.index == value])

1 个答案:

答案 0 :(得分:1)

我不确定这是否是您要查找的内容,但是您是否检查过groupby pandas功能?关键部分是您可以在MultiIndex上应用它,以指定要分组的索引级别(或级别的子集)。例如

split = {}
for value, split_group in data.groupby(level=0):
    split[value] = split_group
print(split)

@jezrael指出了一种更简单的方法:

dict(tuple(df.groupby(level=0)))