熊猫 - 创建一个缓冲列

时间:2017-07-01 00:16:51

标签: python pandas

使用refvalue作为列的DataFrame:

    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

如何创建尊重此定义的第三个buffer列:

  • if ref == 0 then buffer = value
  • if ref != 0 then buffer =最近的前一行ref = 0
  • 的值

2 个答案:

答案 0 :(得分:4)

3.时使用where保留df.value。其余的将是df.ref == 0。使用np.nan填充之前行的ffill。使用assign创建新列。

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

np.nan

答案 1 :(得分:0)

你可以在熊猫中找到条件

//interface
struct Copyable{
    void copy();
}

class Animal { //which implements the interface but doesn't inherit it.
 ....
 void copy();
 ...
}

//consumer function
void Copy(Interface<Copyable> item){
    item.copy();
}

int main(){
 Animal a;
 Copy(a);
}