【问题标题】:python dataframe what apply function per group withouth looppython数据框在没有循环的情况下每组应用函数
【发布时间】:2020-07-23 08:54:33
【问题描述】:

我有一个数据框

df = 
type value
 A     5
 A     7
 B     2
 B     6
 A     1

我要根据 type 列的组应用函数,因此排名将适用于每种类型,新的 df 将是

df = 
type value rank
 A     5    1
 A     7    0
 B     2    1
 B     6    0
 A     1    2

【问题讨论】:

标签: python pandas group-by pandas-groupby data-science


【解决方案1】:

这可以通过sort_values 后跟groupby().cumcount() 来完成:

df['rank'] = df.sort_values('value', ascending=False).groupby('type').cumcount()

输出:

  type  value  rank
0    A      5     1
1    A      7     0
2    B      2     1
3    B      6     0
4    A      1     2

【讨论】:

  • 如果我想应用另一个功能,例如 sklearn.preprocessing.StandardScaler ?
【解决方案2】:

你可以使用groupby.rank,设置ascending=False

df['rank'] = df.groupby('type').value.rank(ascending=False).sub(1).astype(int)

print(df)

  type  value rank
0    A      5    1
1    A      7    0
2    B      2    1
3    B      6    0
4    A      1    2

【讨论】:

  • 如果我想应用另一个功能,例如 sklearn.preprocessing.StandardScaler ?
  • 这是另一个问题@okuoub。我鼓励您为此提出一个新问题,并将这个问题限制在最初陈述的范围内。否则它也会让未来的读者感到困惑
猜你喜欢
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 2017-03-18
  • 2018-11-02
相关资源
最近更新 更多