为了账号安全,请及时绑定邮箱和手机立即绑定

创建两行之和的新列,但每两行重复一次

创建两行之和的新列,但每两行重复一次

MYYA 2023-03-22 16:47:39
我正在努力在数据框中构建一个附加列,该列是一个时间段内两行的总和。这里附上一张图片:我想创建一个新列,它是每个 TimePeriodId 的“BillType”列中“IN”和“SA”的生命总和。这样,我将为单个 TimePeriodId 设置一个“总生命数”条目。我已经浏览了很多文档,但无法弄清楚在这种情况下我会怎么做。代码示例:sa = pd.read_sql(sa_q1, sql_conn)#convert TimePeriodId to string valuessa['TimePeriodId'] = sa['TimePeriodId'].astype(str)sa = sa.loc[(sa['BillType'] =='SA') | (sa['BillType']=='IN')]#.drop(['BillType'], axis = 1)sa.head(10).to_dict()#the last line returns the following:{'TimePeriodId': {1: '201811',  2: '201811',  4: '201812',  5: '201812',  9: '201901',  11: '201901',  13: '201902',  14: '201902',  17: '201903',  18: '201903'}, 'BillType': {1: 'IN',  2: 'SA',  4: 'IN',  5: 'SA',  9: 'SA',  11: 'IN',  13: 'IN',  14: 'SA',  17: 'IN',  18: 'SA'}, 'Lives': {1: 1067,  2: 288028,  4: 1058,  5: 287501,  9: 293560,  11: 1068,  13: 1089,  14: 278850,  17: 1076,  18: 276961}}任何帮助,将不胜感激!
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

您可以尝试使用pandas.DataFrame.groupby()方法来计算每个时间段的生命总和。之后,您可以sa使用方法通过计算列丰富数据框pandas.DataFrame.transform()

>>> sa['LivesTotal'] = sa.groupby('TimePeriodId').Lives.transform('sum')


查看完整回答
反对 回复 2023-03-22
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信