全国服务热线:400-6263-721

位置:长沙童程童美少儿编程培训学院 > 学校动态 > Python将函数应用于分组数据帧

Python将函数应用于分组数据帧

来源:长沙童程童美少儿编程培训学院时间:2023/11/16 14:58:25

  处理泰坦尼克号数据集

  一张票可以为多个乘客发行,即。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将函数应用于分组数据帧的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6263-721