python - 在 python 中使用 DataFrame.apply 时如何访问以前的值?
问题描述
这是我的代码
_d=pd.DataFrame([[1,'foo'],[2,'bar'],[3,'kraig'],[4,'tar']],columns=['roll no','name'],index=[100,200,300,400])
_d.apply(lambda x:print(x['roll no'],axis=1)
我想将我的 roll no 与之前的 rollno 相乘,像这样
roll no hidden logic result
===============================
1 1*1 1
2 2*1 2
3 3*2 6
4 4*3 12
我怎样才能做到这一点?
我知道我可以做这样的事情
for i in range(1, len(df)):
df.loc[i, 'result'] = df.loc[i-1, 'roll no'] * df.loc[i, 'roll no']
但是上面的逻辑不能保证结果是否对应于上一行的乘法
解决方案
Nooooo 没有 for 循环!这是pandas
df['hidden logic'] = df['roll no'] * df['roll no'].shift(fill_value=1)
推荐阅读
- angular - 在 Angular 应用程序中集成原生应用程序(如后退按钮行为)的最佳方法
- python - 为什么“kd_tree”比“brute”花费更多时间?
- ember.js - Ember CSP:动态更改 connect-src
- php - 如何将 zip 文件从本地机器传输到 aws ec2?
- ssas - MDX 查询 - 如何在交叉连接中将 null 替换为 0
- python - 如何使用python识别字符串中单词后面的分隔符
- magento - 如何通过 URL 中的子 SKU 打开父产品
- java - BadPaddingException: mac check in GCM failed
- here-api - 如何解释 DIRECTION 和 RDS_DIRECTION 中的运算符“+”和“-”?
- amazon-web-services - 带有远程 ECR 源的代码管道