首页 > 解决方案 > Pandas-与 SQL 的比较-有人可以解释一下这段代码吗

问题描述

(tips[tips['tip'] < 2]\
  .assign(rnk_min=tips.groupby(['sex'])\ 
  ['tip'].rank(method='min'))\
  .query('rnk_min < 3')\
  .sort_values(['sex', 'rnk_min']))

标签: sqlpandas

解决方案


显然有些事情是清楚的

  1. 选择小费 < 2 的任何人
  2. 创建列assign()
  3. 对人进行排名,然后进一步过滤到排名 < 3 的人

一些用于生成数据集的代码,以便您可以在 jupyter notebook 中进行实验

sex = ["Male","Female"]
s = ['Living_With_Partner','Divorced','Separated','Married','Missing','Never_Married','Widowed']
tips = pd.DataFrame([[random.randint(15,80), sex[random.randint(0,1)], s[random.randint(0,len(s)-1)], 
                    random.randint(0,50)] for r in range(200)],
            columns=["age","sex","status","tip"])

tips
(tips[tips['tip'] < 2]\
  .assign(rnk_min=tips.groupby(['sex'])\
  ['tip'].rank(method='min'))\
  .query('rnk_min < 3')\
  .sort_values(['sex', 'rnk_min']))




推荐阅读