python - 如何通过 Pandas Python 中的分区对 dataframe 中的列进行十分位数?

我试图在我的 dataframe 中对销售列进行十分位数,但也按年划分。所以每年应该有不同的十分位数。

df = ['年份','名称', '销售额']

我想我可以使用这个功能但想按年份分区

df['decile']=pd.qcut(df['sales'],10,labels=False)

我想我可以使用 groupby 但我无法弄清楚语法。

真的很感激任何帮助吗?

回答1

你可以试试:

df['decile'] = df.groupby('year')[['sales'']].apply(lambda g: pd.qcut(g.rank(method='first'), 10, labels=False)+1)

解释:

  • g.rank(method='first'):如果有很多销售具有相同的values。我添加这个是因为在我的实验中,我遇到了很多情况,你有相同的 values。如果重复 values 的可能性很小,那么您可以用 g 替换,这很好。
  • 10, labels=False)+1):如果要标记从 1 到 10,可以保留选项 +1。否则,它将标记从 0 到 9

相似文章

apache-kafka - Kafka replication 问题

我正在使用3代理kafka。如果我停止第三个节点:没问题,我可以从节点1或2消耗LOGS。如果我停止第二个节点:没问题,我可以从节点1或3消耗LOGS。如果我停止第一个节点:我不是什么都能吃。当我重新...

最新文章