df = pd.DataFrame.from_csv('file.csv')
df=df.groupby('category')
print(len(df))
>>>OUT 50
我已经使用 groupby(( 根据它们的各个类别对数据进行了分组,它产生了 50 个组,因为我的数据框中有 50 个不同的类别。
现在的问题是我想从 50 个子组中形成 10 个新表,这意味着每个表将由 5 个子组组成。
我将使用较小的数据作为示例:
ID Category Colour
01 Chocolate Pink
02 Ice cream Purple
03 Candy Green
04 Popcorn Yellow
05 Pizza Blue
06 Pizza Red
07 Chocolate Purple
08 Cracker Brown
09 Chocolate Black
10 Spaghetti Yellow
11 Soft drink Purple
12 Candy Purple
13 Juice Red
14 Cookie Pink
15 Cookie Grey
上面的示例中有 10 个类别,通过使用 groupby((,它将创建 10 个表(巧克力、冰淇淋、糖果、爆米花、比萨饼、饼干、意大利面、软饮料、果汁、饼干(。如何将 2 个类别组合在一起来生成 5 个最终表?
预期成果: 表 1:
ID Category Colour
01 Chocolate Pink
07 Chocolate Purple
09 Chocolate Black
02 Ice cream Purple
表 2:
ID Category Colour
03 Candy Green
12 Candy Purple
04 Popcorn Yellow
表 3:
ID Category Colour
05 Pizza Blue
06 Pizza Red
08 Cracker Brown
等等。只是为了粗略地了解组合组以形成表格的含义。
假设df
有一个名为category
的列,首先我们得到所有类别的列表,然后将其分成几对:
all_categories = df['category'].unique()
category_pairs = all_categories.reshape(-1,2)
然后我们可以将df
分成对:
combined_dfs = [df[df['category'].isin(pair)] for pair in category_pairs]
combined_dfs
将是一个包含 5 个数据帧的列表,每个数据帧包含两个类别。要显示其中每个内容,请执行以下操作:
for combined_df in combined_dfs:
combined_df.head()