我遇到过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
谢谢!
答案 0 :(得分:1)
您可以在索引上使用where
,bfill
即
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)