Python 基于列值创建组

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

我正在尝试基于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        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,可以删除重复边