【发布时间】:2023-04-02 04:45:02
【问题描述】:
我有一个 DataFrame df 像这样:
user_id movie_id rating
32236 1 1 5
23171 1 2 3
83307 1 3 4
62631 1 4 3
47638 1 5 3
26184 2 1 4
1333 5 1 4
172 5 2 3
54487 6 1 4
52430 7 4 5
18504 10 1 4
4617 10 4 4
我希望df基于user_id随机分组,并且每个组具有相同数量的user_id(如果不能平均分配,至少具有相似数量的user_id),但没有合并user_id 行。
例如以每组 2 个user_id 划分
user_id movie_id rating
32236 1 1 5
23171 1 2 3
83307 1 3 4
62631 1 4 3
47638 1 5 3
52430 7 4 5
user_id movie_id rating
26184 2 1 4
18504 10 1 4
4617 10 4 4
user_id movie_id rating
1333 5 1 4
172 5 2 3
54487 6 1 4
我写了一个方法group(df, n):
def group(df, n) :
shuffled = df.sample(frac=1)
result = np.array_split(shuffled, n)
dict = {}
for i, part in enumerate(result):
dict['df_'+str(i+1)] = part
return dict
但它不适用于出现在多行中的相同数字,例如df。而且我只能设置要分成多少个组,而不是每个划分的组有多少个user_id。
如何根据user_id 将df 划分为多个组,以及我提到的每个组有选定数量的user_id?
【问题讨论】:
标签: python python-3.x pandas dataframe jupyter-notebook