我有这个DataFrame:

Names Account_1 Account_2 ID_Movement Less_1 Less_2
Peter 35 70 Movement_1 0 5
Peter 35 70 Movement_2 6 0
Peter 35 70 Movement_3 1 0
Peter 35 70 Movement_4 0 2
Jhon 55 60 Movement_5 6 0
Jhon 55 60 Movement_6 0 2
Jhon 55 60 Movement_7 0 3
Jhon 55 60 Movement_8 12 0
Jhon 55 60 Movement_9 6 0
William 34 88 Movement_10 0 8
William 34 88 Movement_11 0 9
William 34 88 Movement_12 0 5

我试图用每个人的帐户的当前值创建一个新列,代码如下:

s = (df['Account_1']).sub(df['Less_1']).groupby(df['Names']).cumsum(). df2['New_Account1'] = s.

帖子主题:Re:Колибри

Names Account 1 Account 2 ID_Movement Less_1 Less_2 New_Account1 New_Account2
Peter 35 70 Movement_1 0 11 35 59
Peter 35 70 Movement_2 6 0 29 59
Peter 35 70 Movement_3 6 0 23 59
Peter 35 70 Movement_4 0 4 23 55
Jhon 55 60 Movement_5 6 0 49 60
Jhon 55 60 Movement_6 0 14 49 46
Jhon 55 60 Movement_7 0 13 49 33
Jhon 55 60 Movement_8 12 0 37 33
Jhon 55 60 Movement_9 6 0 31 33
William 34 88 Movement_10 12 0 22 88
William 34 88 Movement_11 0 9 22 79
William 34 88 Movement_12 0 5 22 74

推荐答案

使用groupby.cumsum,减go to_numpy():

df[['New_Account1', 'New_Account2']] = (df[['Account_1', 'Account_2']]
                                        - df.groupby('Names')[['Less_1', 'Less_2']]
                                            .cumsum().to_numpy()
                                        )

输出:

      Names  Account_1  Account_2  ID_Movement  Less_1  Less_2  New_Account1  New_Account2
0     Peter         35         70   Movement_1       0       5            35            65
1     Peter         35         70   Movement_2       6       0            29            65
2     Peter         35         70   Movement_3       1       0            28            65
3     Peter         35         70   Movement_4       0       2            28            63
4      Jhon         55         60   Movement_5       6       0            49            60
5      Jhon         55         60   Movement_6       0       2            49            58
6      Jhon         55         60   Movement_7       0       3            49            55
7      Jhon         55         60   Movement_8      12       0            37            55
8      Jhon         55         60   Movement_9       6       0            31            55
9   William         34         88  Movement_10       0       8            34            80
10  William         34         88  Movement_11       0       9            34            71
11  William         34         88  Movement_12       0       5            34            66

Python相关问答推荐

使用FASTCGI在IIS上运行Django频道

如何将双框框列中的成对变成两个新列

如何从具有不同len的列表字典中创建摘要表?

如何在虚拟Python环境中运行Python程序?

C#使用程序从Python中执行Exec文件

在ubuntu上安装dlib时出错

计算天数

try 检索blob名称列表时出现错误填充错误""

如何使用两个关键函数来排序一个多索引框架?

计算空值

在电影中向西北方向对齐""

使用polars. pivot()旋转一个框架(类似于R中的pivot_longer)

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

如何在PythonPandas 中对同一个浮动列进行逐行划分?

BeatuifulSoup从欧洲志愿者服务中获取数据和解析:一个从EU-Site收集机会的小铲子

仅取消堆叠最后三列

Pandas ,快速从词典栏中提取信息到新栏

了解如何让库认识到我具有所需的依赖项

大Pandas 每月重新抽样200万只和300万只

Parsel无法访问嵌套元素