从多个变量创建复合变量并添加到数据框
Create composite variable from multiple variables and add to dataframe
我有一个包含三个租金中位数变量的数据框。数据框如下所示:
region_id
year
1bed_med_rent
2bed_med_rent
3bed_med_rent
1
2010
800
1000
1200
1
2011
850
1050
1250
2
2010
900
1000
1100
2
2011
950
1050
1150
我想使用区域和年份的公共元素将所有租金变量合并为一个变量,如下所示:
region_id
year
med_rent
1
2010
1000
1
2011
1050
2
2010
1000
2
2011
1050
使用 pandas 中的 agg() 函数,我已经能够对多个变量执行函数,但我无法组合变量并插入到数据帧中。我尝试将 assign() 函数与以下代码结合使用但没有成功。
#Creating the group list of common IDs
group_list = ['region_id', 'year']
#Grouping by common ID and taking median values of each group
new_df = df.groupby(group_list).agg({'1bed_med_rent': ['median'],'2bed_med_rent':
['median'], '3bed_med_rent': ['median']}).reset_index()
还有什么其他方法可以做到这一点?
这里 set_index
结合 apply
应用于行的其余部分应该这样做:
(df.set_index(['region_id','year'])
.apply(lambda r:r.median(), axis=1)
.reset_index()
.rename(columns = {0:'med_rent'})
)
生产
region_id year med_rent
0 1 2010 1000.0
1 1 2011 1050.0
2 2 2010 1000.0
3 2 2011 1050.0
我有一个包含三个租金中位数变量的数据框。数据框如下所示:
region_id | year | 1bed_med_rent | 2bed_med_rent | 3bed_med_rent |
---|---|---|---|---|
1 | 2010 | 800 | 1000 | 1200 |
1 | 2011 | 850 | 1050 | 1250 |
2 | 2010 | 900 | 1000 | 1100 |
2 | 2011 | 950 | 1050 | 1150 |
我想使用区域和年份的公共元素将所有租金变量合并为一个变量,如下所示:
region_id | year | med_rent |
---|---|---|
1 | 2010 | 1000 |
1 | 2011 | 1050 |
2 | 2010 | 1000 |
2 | 2011 | 1050 |
使用 pandas 中的 agg() 函数,我已经能够对多个变量执行函数,但我无法组合变量并插入到数据帧中。我尝试将 assign() 函数与以下代码结合使用但没有成功。
#Creating the group list of common IDs
group_list = ['region_id', 'year']
#Grouping by common ID and taking median values of each group
new_df = df.groupby(group_list).agg({'1bed_med_rent': ['median'],'2bed_med_rent':
['median'], '3bed_med_rent': ['median']}).reset_index()
还有什么其他方法可以做到这一点?
这里 set_index
结合 apply
应用于行的其余部分应该这样做:
(df.set_index(['region_id','year'])
.apply(lambda r:r.median(), axis=1)
.reset_index()
.rename(columns = {0:'med_rent'})
)
生产
region_id year med_rent
0 1 2010 1000.0
1 1 2011 1050.0
2 2 2010 1000.0
3 2 2011 1050.0