我在 Python 中遇到了 Pandas 的问题,不幸的是我无法解决。 问题可以分为不同的部分,解释其中的一些部分已经很有帮助了!我可以迭代所有行,但出于性能原因,我自然想避免这种情况。
所以我有一个包含“A”和“B”列的数据框。 B 列大部分是 0,也有一些 1。现在,在 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。
谢谢!
最佳答案
您可以在索引上使用 where
then ,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)
关于python - 将具有索引差异的特征添加到带有条件的下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47550731/