我正在一个数据框架中构建一个额外的列,这是一段时间内两行的总和。附图如下:
我想要创建一个新的列,它是每个BillType列中“in”和“SA”的生命之和。这样,我将有一个‘生命总’条目的单一TimePeriodId。我已经看过了很多文档,也不知道在这种情况下我会怎样做。
代码示例:
sa = pd.read_sql(sa_q1, sql_conn)
#convert TimePeriodId to string values
sa['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}}
任何帮助都将不胜感激!
发布于 2020-07-21 13:02:41
您可以尝试使用pandas.DataFrame.groupby()
方法来计算每个时间段的生命总和。之后,可以使用sa
方法通过计算列充实pandas.DataFrame.transform()
数据。
>>> sa['LivesTotal'] = sa.groupby('TimePeriodId').Lives.transform('sum')
https://stackoverflow.com/questions/63014971
复制相似问题