首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对特定行求和,同时忽略一列

对特定行求和,同时忽略一列
EN

Stack Overflow用户
提问于 2017-08-23 00:00:24
回答 1查看 24关注 0票数 0

我正在比较新旧的数据收集技术。我需要对一列求和,同时保持其他列不变。我的数据帧如下所示:

代码语言:javascript
复制
          new   old
apples    25    11
pears     12    4
apples    25    5
apples    25    8
bananas   5     1
pears     12    9
bananas   5     5

新的数据收集技术总是会产生正确的答案,但旧的数据收集技术会根据使用的技术产生不同的答案。我不想触及新技术的价值,我想总结一下旧技术的价值,留给我的是:

代码语言:javascript
复制
          new   old
apples    25    24
pears     12    13
bananas   5     6

我非常确定groupby是我的朋友,但不知道如何填充新列。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-23 00:05:54

你是对的,groupby是你的朋友。试着这样做:

代码语言:javascript
复制
df.groupby('new').old.sum().reset_index()

    new old
0   5   6
1   12  13
2   25  24

请注意,您将丢失原始数据帧的索引。

如果您想保留索引,可以执行以下操作:

代码语言:javascript
复制
my_df = my_df.reset_index().groupby('index').agg({'new':'first','old':'sum'})
del my_df.index.name

        old new
apples  24  25
bananas 10  5
pears   9   12

如果你不关心你的原始索引,我建议你使用前者,因为它更有效:

代码语言:javascript
复制
%timeit my_df.groupby('new').old.sum().reset_index()
817 µs ± 2.22 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit my_df.reset_index().groupby('index').agg({'new':'first','old':'sum'})
1.33 ms ± 1.02 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45822330

复制
相关文章

相似问题

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