Python Pandas–创建缓冲列
对于具有ref和value作为列的数据帧: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 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是。是,但仍然可用