【发布时间】:2019-01-15 10:18:57
【问题描述】:
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 个决赛桌?
预期结果: 表一:
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
等等。只是为了大致了解将组组合成表格的含义。
【问题讨论】:
-
看看pandas.Series.isin函数link
-
@TBurgis 我认为这不是我想要的。因为我不会知道该类别的所有价值,也不想知道。我只想根据类别将两组数据添加在一起。
-
那么如果有 10 个类别,您只想将它们分成 5 个随机组,每组 2 个?
-
@TBurgis 是的。我的主要观点是将这些组组合在一起以形成我想要的最终组数,在本例中为 5 个最终组
-
好的。我要添加一个答案。希望这就是你所追求的。
标签: python python-2.7 pandas merge