我有一个带有分层索引的大型数据框(下面的代码中提供了一个简单/格式示例)。我想设置一种循环/自动方式,将数据帧分为每个唯一索引值的子集,即下面的编码示例中的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])
答案 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)))