繁体   English   中英

如何对两列进行分组并在新列中分配类别(数字)?

[英]How to groupby two columns and assign a category(number) in a new column?

我想按年龄和姓名分组,并在同一类别中分配不同的人。

初始数据:

name age salary 
abc   24  1000    
def   27  2000    
ghi   25  3000    
jkl   24  1000    
mno   25  3000 

最终数据:

name age salary group
abc   24  1000    1
def   27  2000    2
ghi   25  3000    3
jkl   24  1000    1
mno   25  3000    3

您可以使用factorize将类别转换为整数标识符。

将数据分配给df,然后使用以下代码。

# concat age and salary
fact = df.age.astype(str).str.cat(df.salary.astype(str))
# then use factorize
df['group'] = pd.factorize(fact)[0] + 1

输出:

  name age  salary  group
0  abc  24    1000      1
1  def  27    2000      2
2  ghi  25    3000      3
3  jkl  24    1000      1
4  mno  25    3000      3

对两列创建的元组列表使用factorize

df['group'] = pd.factorize(list(zip(df['age'],df['salary'])))[0] + 1
print (df)
  name  age  salary  group
0  abc   24    1000      1
1  def   27    2000      2
2  ghi   25    3000      3
3  jkl   24    1000      1
4  mno   25    3000      3

要么:

df['group'] = pd.factorize(list(map(tuple, df[['age','salary']].values.tolist())))[0] + 1
print (df)
  name  age  salary  group
0  abc   24    1000      1
1  def   27    2000      2
2  ghi   25    3000      3
3  jkl   24    1000      1
4  mno   25    3000      3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM