我正在努力在数据框中构建一个附加列,该列是一个时间段内两行的总和。这里附上一张图片:我想创建一个新列,它是每个 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')
添加回答
举报
0/150
提交
取消