首页 > 解决方案 > 在 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']

但是上面的逻辑不能保证结果是否对应于上一行的乘法

标签: pythonpython-3.xpandasdataframepandas-apply

解决方案


Nooooo 没有 for 循环!这是pandas

df['hidden logic'] = df['roll no'] * df['roll no'].shift(fill_value=1)

推荐阅读