使用条件将具有索引差异的特征添加到下一行

时间:2017-11-29 10:37:35

标签: python pandas

我遇到过Python中的Pandas问题,遗憾的是我无法解决。 问题可以分成不同的部分,解释其中一些已经是一个很大的帮助!我可以迭代遍历所有行,但出于性能原因,我自然希望避免这种情况。

所以我有一个包含'A'和'B'列的数据框。 B列大多为0,有1s。现在在A列中我想在每一行中插入到下一行的索引距离,其中B中有一个1。 示例输出应如下所示:

   A   B
0  1   0
1  0   1
2  2   0
3  1   0
4  0   1

然后,如果可以这样做,我甚至会更进一步,在B前面看n行,如果某些条件在A的这n行中,我们想要设置不同的值,例如-1

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在索引上使用wherebfill

df['temp'] = df['B'].index.where(df['B'].eq(1),np.nan)
df['new'] = (df['temp'].bfill() - df.index).fillna(-1) # fillna if you cant find 1 at the end 

  A  B  temp  new
0  1  0   NaN  1.0
1  0  1   1.0  0.0
2  2  0   NaN  2.0
3  1  0   NaN  1.0
4  0  1   4.0  0.0

将温度降到最后,即df.drop(['temp'],1)