Python 基于列值创建组
我正在尝试基于particluar DataFrame列值创建用户组。我想根据总使用量指标创建整个数据帧人口的10个用户组。数据帧df示例如下所示Python 基于列值创建组,python,pandas,Python,Pandas,我正在尝试基于particluar DataFrame列值创建用户组。我想根据总使用量指标创建整个数据帧人口的10个用户组。数据帧df示例如下所示 user_id total_usage 1 10 2 10 3 20 4 20 5 30 6 30 7 40 8 40 9 50 10 50 11 60 12 6
user_id total_usage
1 10
2 10
3 20
4 20
5 30
6 30
7 40
8 40
9 50
10 50
11 60
12 60
13 70
14 70
15 80
16 80
17 90
18 90
19 100
20 100
user_id total_usage user_group
1 10 10th_group
2 10 10th_group
3 20 9th_group
4 20 9th_group
5 30 8th_group
6 30 8th_group
7 40 7th_group
8 40 7th_group
9 50 6th_group
10 50 6th_group
11 60 5th_group
12 60 5th_group
13 70 4th_group
14 70 4th_group
15 80 3th_group
16 80 3th_group
17 90 2nd_group
18 90 2nd_group
19 100 1st_group
20 100 1st_group
df只是整个数据帧的一个片段,它的长度超过6000条记录,但是我只希望有10个用户组
下面是我想要的输出的一个例子
user_id total_usage
1 10
2 10
3 20
4 20
5 30
6 30
7 40
8 40
9 50
10 50
11 60
12 60
13 70
14 70
15 80
16 80
17 90
18 90
19 100
20 100
user_id total_usage user_group
1 10 10th_group
2 10 10th_group
3 20 9th_group
4 20 9th_group
5 30 8th_group
6 30 8th_group
7 40 7th_group
8 40 7th_group
9 50 6th_group
10 50 6th_group
11 60 5th_group
12 60 5th_group
13 70 4th_group
14 70 4th_group
15 80 3th_group
16 80 3th_group
17 90 2nd_group
18 90 2nd_group
19 100 1st_group
20 100 1st_group
任何人能提供的任何帮助都将不胜感激 与负片的变化顺序以及1.st和2.nd值一起使用:
通过负片更改顺序并用于1.st和2.nd值:
尝试将pd.Series与np.repeat、np.arange、pd.DataFrame.groupby、pd.Series.astype、pd.Series.map和pd.Series.fillna一起使用:
现在:
print(df)
是:
尝试将pd.Series与np.repeat、np.arange、pd.DataFrame.groupby、pd.Series.astype、pd.Series.map和pd.Series.fillna一起使用:
现在:
print(df)
是:
看起来您正在查找qcut,但顺序相反
df['user_group'] = 10 - pd.qcut(df['total_usage'], np.arange(0,1.1, 0.1)).cat.codes
输出,它不是有序的,但我希望它可以:
0 10
1 10
2 9
3 9
4 8
5 8
6 7
7 7
8 6
9 6
10 5
11 5
12 4
13 4
14 3
15 3
16 2
17 2
18 1
19 1
dtype: int8
看起来您正在查找qcut,但顺序相反
df['user_group'] = 10 - pd.qcut(df['total_usage'], np.arange(0,1.1, 0.1)).cat.codes
输出,它不是有序的,但我希望它可以:
0 10
1 10
2 9
3 9
4 8
5 8
6 7
7 7
8 6
9 6
10 5
11 5
12 4
13 4
14 3
15 3
16 2
17 2
18 1
19 1
dtype: int8
如果用户组的总使用率为64,那么用户组将是什么?@rsno我想这将取决于人口中的其他值。我的数据集有6000多条记录,因此我试图以编程方式将这些记录分组。@jezrael在本例中是的。但是,我的完整数据帧超过6000条记录,有数百个唯一值。@moe_95-因此,如果200个唯一值需要从第一组到第200组?@jezrael否,我希望将整个人口分成10组。我的完整df有6000条记录,由于小数点的原因,大多数记录是唯一的。如果总使用量为64,用户组将是什么?@rsno我想这将取决于总体中的其他值。我的数据集有6000多条记录,因此我试图以编程方式将这些记录分组。@jezrael在本例中是的。但是,我的完整数据帧超过6000条记录,有数百个唯一值。@moe_95-因此,如果200个唯一值需要从第一组到第200组?@jezrael否,我希望将整个人口分成10组。我的完整df有6000条记录,由于小数点的原因,大多数记录都是唯一的。非常感谢您的帮助。当在我的整个数据帧上运行时,我得到以下错误值error:Bin边必须是唯一的:数组[-451.,-19.,-13.,-10.,-8.,-7.,-6.,-5.,-4.,-1.]。可以通过设置“duplicates”删除重复边kwarg@moe_95非常感谢,我现在就去看看。非常感谢你的帮助。当在我的整个数据帧上运行时,我得到以下错误值error:Bin边必须是唯一的:数组[-451.,-19.,-13.,-10.,-8.,-7.,-6.,-5.,-4.,-1.]。可以通过设置“duplicates”删除重复边kwarg@moe_95看到了非常感谢,我现在就去看看非常感谢你的帮助,我真的很感激。当在我的整个数据帧上运行时,我得到以下错误值error:Bin边必须是唯一的:数组[-451.,-19.,-13.,-10.,-8.,-7.,-6.,-5.,-4.,-1.]。您可以通过设置“duplicates”(重复)标记来删除重复边。非常感谢您的帮助,我非常感谢。当在我的整个数据帧上运行时,我得到以下错误值error:Bin边必须是唯一的:数组[-451.,-19.,-13.,-10.,-8.,-7.,-6.,-5.,-4.,-1.]。通过设置“duplicates”(重复)kwarg,可以删除重复边