/**/

我有这个DataFrame:

NamesAccount_1Account_2ID_MovementLess_1Less_2
Peter3570Movement_105
Peter3570Movement_260
Peter3570Movement_310
Peter3570Movement_402
Jhon5560Movement_560
Jhon5560Movement_602
Jhon5560Movement_703
Jhon5560Movement_8120
Jhon5560Movement_960
William3488Movement_1008
William3488Movement_1109
William3488Movement_1205

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

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

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

NamesAccount 1Account 2ID_MovementLess_1Less_2New_Account1New_Account2
Peter3570Movement_10113559
Peter3570Movement_2602959
Peter3570Movement_3602359
Peter3570Movement_4042355
Jhon5560Movement_5604960
Jhon5560Movement_60144946
Jhon5560Movement_70134933
Jhon5560Movement_81203733
Jhon5560Movement_9603133
William3488Movement_101202288
William3488Movement_11092279
William3488Movement_12052274

推荐答案

使用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相关问答推荐

如何压缩以特定扩展名结尾的文件

为什么不带字段和带 NotRequired 字段的 TypedDict 类型不兼容?

从具有值列表的 3 级嵌套字典中的项目构造 pandas DataFrame

按组划分数据框

嵌套字典创建 - Python

为什么添加多处理会阻止 python 找到我编译的 c 程序?

Python,将邮箱更改为名称格式

从 Python 的子列表中删除元素

Python 中具有相同键的哈希字典

删除具有相似值的行

如何使用 python lxml 删除 XML 文档根元素之外的注释

数字中全为 1 的最低基系统

Scrapy 从 Select 器列表中返回单个项目

仅在 tkinter GUI 中动态调整图像大小

无法在 Python 中调用 C++ 类函数

如何在python中写入json文件?

如何格式化具有多个 NaN 值的数据框,将所有行连接到不以 NaN 开头的行

Plotly updatemenus 剪裁成子图

从python多进程返回变量

Python 进度条显示额外的百分比