首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环以基于中的其他列值创建新列

循环以基于中的其他列值创建新列
EN

Stack Overflow用户
提问于 2019-04-30 06:39:42
回答 2查看 515关注 0票数 0

我希望根据多行中的其他列值在python dataframe中创建一个新列。例如,我的python dataframe df:

代码语言:javascript
复制
A    |    B
------------
10   |    1
20   |    1
30   |    1
10   |    1
10   |    2
15   |    3
10   |    3

我想要创建变量C,它基于变量A的值,条件来自多行中的变量B。当i行中变量B的值,i+1,.,C的值是这些行中变量A的和。在这种情况下,我的输出数据框架将是:

代码语言:javascript
复制
  A   |   B   |   C
--------------------
  10  |   1   |   70
  20  |   1   |   70
  30  |   1   |   70
  10  |   1   |   70
  10  |   2   |   10
  15  |   3   |   25
  10  |   3   |   25

我不知道实现这一目标的最佳方法。有人能帮忙吗?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-30 07:12:06

重新创建数据:

代码语言:javascript
复制
import pandas as pd

A = [10,20,30,10,10,15,10]

B = [1,1,1,1,2,3,3]

df = pd.DataFrame({'A':A, 'B':B})

df

     A   B
0   10   1
1   20   1
2   30   1
3   10   1
4   10   2
5   15   3
6   10   3

然后,我将从df创建一个查找系列:

代码语言:javascript
复制
lookup = df.groupby('B')['A'].sum()
lookup

    A
B
1   70
2   10
3   25

然后我将使用应用程序对df进行查找

代码语言:javascript
复制
df.loc[:,'C'] = df.apply(lambda row: lookup[lookup.index == row['B']].values[0], axis=1)
df

         A   B    C
    0   10   1   70
    1   20   1   70
    2   30   1   70
    3   10   1   70
    4   10   2   10
    5   15   3   25
    6   10   3   25
票数 1
EN

Stack Overflow用户

发布于 2019-04-30 06:50:38

您必须使用groupby()方法对B上的行和A上的sum()进行分组。

代码语言:javascript
复制
df['C'] = df.groupby('B')['A'].transform(sum)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55915230

复制
相关文章

相似问题

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