位置:长沙童程童美少儿编程培训学院 > 学校动态 > Python将函数应用于分组数据帧
处理泰坦尼克号数据集
一张票可以为多个乘客发行,即。E多个乘客可能有相同的车票号码
所有这些乘客的“票价”功能将与全部票价相同且相等
例如,如果有4名乘客乘坐一张票,票价可以是40美元,但每位乘客的票价应该是10美元。
因此,我们应该将票价除以车票频率来计算每位乘客的票价。
但还有一件事:婴儿票价为2美元,12岁以下儿童票价为成人票价的一半。
因此,我试图在考虑儿童票价的情况下,计算门票中每个成人支付的价格。
以下是一个示例数据框:
df = pd.DataFrame({'Age': [0.5,5,20,21,22,23,24], 'Fare': [17,17,17,40,40,40,40], 'TicketNum': [1,1,1,2,2,2,2]})
Age Fare TicketNum
0 0.5 17 1
1 5.0 17 1
2 20.0 17 1
3 21.0 40 2
4 22.0 40 2
5 23.0 40 2
6 24.0 40 2
首先我做这个函数:
def fare_calc(x):
ticket_fare = x['Fare'].mean()
group_size = x.shape[0]
babies_count = x[x['Age']<1].count()
child_count = x[x['Age']<12].count()
adult_count = group_size - babies_count - child_count
adult_fare = (ticket_fare - babies_count * 2) / (adult_count + child_count*0.5)
return adult_fare
然后我尝试:
df['TicketFreq'] = df.groupby('TicketNum')['TicketNum'].transform('count')
df['Fare2'] = df[df.TicketFreq>1].groupby(['TicketNum'])['Age','Fare'].agg(fare_calc)
并得到一个错误:
ValueError:传递的项目数错误2,放置意味着1
所需输出如下:
Age Fare TicketNum Fare2
0 0.5 17 1 10
1 5.0 17 1 10
2 20.0 17 1 10
3 21.0 40 2 10
4 22.0 40 2 10
5 23.0 40 2 10
6 24.0 40 2 10
尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/977/news/681759/违者必究! 以上就是长沙童程童美少儿编程培训学院 小编为您整理 Python将函数应用于分组数据帧的全部内容。