python - Python Pandas 使用先例行值更新行中的值
问题描述
我必须使用先例行值来计算新值。我有很多行,我不想使用循环,因为它需要很多时间,我尝试使用 shift 但我认为它对我没有帮助,或者我可能不知道如何使用它。
在这里,关于我想要做什么的小例子。
我有一个数据框
df = pd.DataFrame({'A': [4,2,3,2], 'B': [2, 3,4,5]})
In [273]: df
Out[273]:
A B
0 4 2
1 2 3
2 3 4
3 2 5
我想创建新列'C':
- C 的第一个值是 A 的第一个值
- C的第二个值,取C的第一个值并添加B(第二个),
- C的第三个值,取C的第二个值并添加B(第三个)得到类似(最终结果)
In [273]: df
Out[273]:
A B C
0 4 2 4.0
1 2 3 7.0
2 3 4 11.0
3 2 5 16.0
我真的不想使用循环或应用,所以如果有另一种快速的方法,我真的很想知道它。
非常感谢
解决方案
您正在寻找累积除法,因此累积 prod 方法的逆,您可以使用.cumprod()
method.
唯一的技巧是你想从 A 列的第一个值开始而不是 B 所以你需要乘以 A 的第一个值和 B 的第一个值
df['C'] = 1/df['B'].cumprod()*df.loc[0,'B'] * df.loc[0,'A']
# A B C
#0 4 2 4.000000
#1 2 3 1.333333
#2 3 4 0.333333
#3 2 5 0.066667
推荐阅读
- python - 在python中创建一个wilcoxon秩和测试的for循环以生成p值列表?
- ios - 在 SwiftUI 3 中交换选项卡视图指示器的配色方案
- python - 使用 Python 日志记录消息和标准错误
- json - 带 curl 的 Keycloak POST(创建用户和组)
- javascript - 使变量与对象方法相等
- windows - 如何检测正在进行的 webex 会议或 google 会议
- bash - 如何使用自定义文件夹中的所有脚本,例如 macOS 中的本机 shell 命令
- javascript - 在本地捕获 mux.monitor 对象
- python - 如何从不同表中的字段创建复合外键?
- node.js - TypeORM - 如何在不先获取关系的情况下使用外键插入表