python数据框在没有循环的情况下每组应用函数
Posted
技术标签:
【中文标题】python数据框在没有循环的情况下每组应用函数【英文标题】:python dataframe what apply function per group withouth loop 【发布时间】: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
【问题讨论】:
这些答案有帮助吗?不要忘记您可以投票并接受答案。见What should I do when someone answers my question?,谢谢! 【参考方案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。我鼓励您为此提出一个新问题,并将这个问题限制在最初陈述的范围内。否则它也会让未来的读者感到困惑以上是关于python数据框在没有循环的情况下每组应用函数的主要内容,如果未能解决你的问题,请参考以下文章