首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建两行之和的新列,但每两行重复一次

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

Stack Overflow用户
提问于 2020-07-21 12:51:52
回答 1查看 119关注 0票数 0

我正在一个数据框架中构建一个额外的列,这是一段时间内两行的总和。附图如下:

我想要创建一个新的列,它是每个BillType列中“in”和“SA”的生命之和。这样,我将有一个‘生命总’条目的单一TimePeriodId。我已经看过了很多文档,也不知道在这种情况下我会怎样做。

代码示例:

代码语言:javascript
运行
复制
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}}

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-21 13:02:41

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

代码语言:javascript
运行
复制
>>> sa['LivesTotal'] = sa.groupby('TimePeriodId').Lives.transform('sum')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63014971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档