python - 根据特定列值组合 Dataframe 上的行并添加其他值
问题描述
所以我有一个数据框,我希望将两个相同的列值组合在一起,但让所有其他列值保持原样。
例如:
c1 c2
shark 20
pizza 25
asteroid 10
shark 90
asteroid 30
我希望它将c1
列中的所有内容与仅值组合shark
并添加值,c2
因此我得到以下信息:
c1 c2
shark 110
pizza 25
asteroid 10
asteroid 30
groupby
结合了我不想要的一切。
我猜使用df.loc
会带我到某个地方,但我不确定如何将它应用回数据框,所以它会改变它。
解决方案
您可以使用Groupby.sum
and执行此操作df.append
:
从 df where c1 == 'shark'
、 groupby 和 sum中选择行c2
。然后append
剩余的行c1 != 'shark'
到较早的数据帧。
In [2009]: x = df[df.c1 == 'shark'].groupby('c1', as_index=False).sum()
In [2012]: res = x.append(df[df.c1 != 'shark'])
In [2013]: res
Out[2013]:
c1 c2
0 shark 110
1 pizza 25
2 asteroid 10
4 asteroid 30
推荐阅读
- python - 烧瓶会话未检测到会话中的项目中存在
- ruby - Minitest:NoMethodError:nil:NilClass的未定义方法`split'
- r - 模块中的错误(childScope$input,childScope$output,childScope,...):未使用的参数(childScope$output,childScope)
- python - 课程没有运行 - 没有结果
- angular - 我无法从 Angular 的规范文件中访问组件 - Karma/Jasmine 单元测试
- regex - 在 Adobe Bridge 中批量重命名文件
- vuex - 在商店的空数组中传递谷歌地图路线数据
- java - EJB 事务需要很长时间才能提交
- github-actions - 将 linter 自动修复结果提交到 PR?
- python - Condor 成功运行 python,但不显示输出文件