熊猫:使用前一行计算列

时间:2017-04-09 08:07:48

标签: pandas

我有这个代码(不太好),通过迭代计算基于先前行值的一列:

date_prev_list= np.zeros(len(df))
for ii, row in df.iterrows():
   col_nb= row['colum_nb']
   if col_nb == col_nb_prev :    #Condition

      #Store previous row value in current row
      date_prev_list[ii]= date_prev

      #Store previous values
      date_prev=          row['datesec2']
      col_nb_prev=        col_nb

   else :
      #Store previous value 
      date_prev=    row['datesec2']
      col_nb_prev=  col_nb        

df['datesec_prev']=  pd.Series(  date_prev_list) 

只是想知道我们是否可以使用泛型方法直接使用Pandas中的df.apply()。

1 个答案:

答案 0 :(得分:0)

我没有找到使用df.apply的解决方案,但这可能对您有帮助。

制作样本数据

In [2]: df = pd.DataFrame({'a': [1,1,2,2,3], 'b': [11,12,13,14,15]})

In [3]: df
Out[3]:
   a   b
0  1  11
1  1  12
2  2  13
3  2  14
4  3  15

解决方案:

In [6]: t = df.a.shift() == df.a

In [10]: df.b.shift().where(t, 0)
Out[10]:
0     0.0
1    11.0
2     0.0
3    13.0
4     0.0
Name: b, dtype: float64