【发布时间】:2021-10-20 01:45:22
【问题描述】:
我有一个包含 3 个变量、2 个分类变量和 2 个数字变量的 pandas 数据框。
| ID | Trimester | State | Tax | rate |
|---|---|---|---|---|
| 45 | T1 | NY | 20 | 0.25 |
| 23 | T3 | FL | 34 | 0.3 |
| 35 | T2 | TX | 45 | 0.6 |
我想得到一个表格的新表格:
| ID | Trimester | State | Tax | rate | Tax_per_state_per_trimester |
|---|---|---|---|---|---|
| 45 | T1 | NY | 20 | 0.25 | H |
| 23 | T3 | FL | 34 | 0.3 | L |
| 35 | T2 | TX | 45 | 0.6 | M |
其中新变量“Tax_per_state_per_trimester”是一个分类变量,表示相应子组的三分位数,其中 L = 第一个三分位数,M = 第二个三分位数,L = 最后一个三分位数
我知道我可以使用以下方法进行双重分组:
df.groupby(['State', 'Trimester'])
但我不知道从那里怎么走。
我猜想使用 quantile 函数应用或转换应该很有用,但是如何?
【问题讨论】:
-
可以使用 pd.quantile(0.33) 吗?但是你三分位数的基础是什么?到您按三个月分组时,州,您将只有 1 个税值?那么计算三分位数的基数是什么?基础是所有三个月还是所有状态?我想不通。
-
不会只赌 1 个税值,因为数据框要大得多,这只是一个样本。双重分组将(在任何操作之前)给出一个列表,其中包含每个州在每个学期的税收值。例如,组 NY_T1 将具有 [20,45,65,75] ,然后通常会应用一个函数,例如。意思是()。如果我想要,那么我只需执行 df.groupby(['State', 'Trimester'])['tax'].mean() ,我会得到每个州每三个月的平均税。
-
.mean() 你只需要 1 个数字吗?你想要的是说 [20,45,65,75,xx,xx,xx] 对于每个状态,tri,你想要一个分位数,对吧?不会只有 1 个数字吧?
标签: python pandas pandas-groupby feature-engineering