从原始数据帧中获取多个数据帧



我有以下数据帧:

df = pd.DataFrame({'ID': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 
'Name': ['name1', 'name2', 'name3', 'name4', 'name5', 'name6', 
'name7', 'name8', 'name9', 'name10', 'name11', 'name12'],
'Category': ['A', 'A/B', 'B/C', 'A/B/C', 'A/B/C', 'B/C',
'A/B', 'A/B/C', 'A/B/C', 'B', 'C', 'A/C']})

我需要为每个类别获取一些数据帧。例如,作为A类的输出:

df_a = pd.DataFrame({'ID': [1, 2, 4, 5, 7, 8, 9, 12], 
'Name': ['name1', 'name2', 'name4', 'name5',  
'name7', 'name8', 'name9', 'name12'],
'Category': ['A', 'A', 'A', 'A', 
'A', 'A', 'A', 'A']})

让我们划分类别,分解数据帧并分组:

df_dicts = {k:v for k,v in (df.assign(Category=df['Category'].str.split('/'))
.explode('Category')
.groupby('Category')
)
}

你会得到,例如df_dicts['A']:

ID    Name Category
0    1   name1        A
1    2   name2        A
3    4   name4        A
4    5   name5        A
6    7   name7        A
7    8   name8        A
8    9   name9        A
11  12  name12        A

只保留类别中包含"A":

df_a = df[df['Category'].str.contains('A')]

最新更新