如何在 python 中使用 DataFrame.apply 时访问以前的值?
How to access the previous value while using DataFrame.apply in python?
这是我的代码
_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']
但是如果结果对应于前一行的乘法,上面的逻辑将无法保证
没有 for 循环!这是pandas
df['hidden logic'] = df['roll no'] * df['roll no'].shift(fill_value=1)
这是我的代码
_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']
但是如果结果对应于前一行的乘法,上面的逻辑将无法保证
没有 for 循环!这是pandas
df['hidden logic'] = df['roll no'] * df['roll no'].shift(fill_value=1)