Python Pandas–创建缓冲列

Python Pandas–创建缓冲列,python,pandas,Python,Pandas,对于具有ref和value作为列的数据帧: ref value buffer 0 0 0 0 1 1 3 0 2 2 4 0 3 0 2 2 4 8 21 2 5 0 -2 -2 6 3 13 -2 7 6 17 -2 8 2 4 -

对于具有ref和value作为列的数据帧:

    ref  value  buffer
0     0      0       0
1     1      3       0
2     2      4       0
3     0      2       2
4     8     21       2
5     0     -2      -2
6     3     13      -2
7     6     17      -2
8     2      4      -2
9     0      5       5
10    0      5       5
如何创建符合此定义的第三个缓冲区列:

如果ref==0,则buffer=value 如果ref!=0然后buffer=最近的前一行的值,其中ref=0
你可以在熊猫身上看到这种情况

df.ix[condition, column_to_apply] = value
当df.ref==0时,使用where保存df.value。其余的将是np.nan。使用ffill从前面的行填充np.nan。使用“指定”创建新列

请注意,我没有将列强制转换为int。我忽略了它,因为ref的前几行可能不是零。如果发生这种情况,缓冲区的初始行将是np.nan,没有任何可向前填充的内容。在这种情况下,我无法转换为int

df.assign(buffer=df.value.where(df.ref.eq(0)).ffill())

.ix是。是,但仍然可用