合并 groupby() 中的子组以形成新的表 pandas python 2.7


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()

最新更新