python - 将具有索引差异的特征添加到带有条件的下一行

标签 python pandas

我在 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/

相关文章:

python - 在 Pandas 中查询满足一组条件的最近对象(及时)

python - Pandas read_html 生成带有元组列名称的空 df

python - Matplotlib 子图未绘制

python - Pandas groupby 根据列值和组大小份额选择前 N 行

python - 如何使用unittest.TestResult?

python - 使用 Pandas 从类似于 json 的列表中检索值

python - for 循环列表 - 返回错误 "too many values to unpack"

python - 添加两个 DataFrame 并对列进行排序(前两个除外)

python - Pandas GroupBy 和日期范围内的平均值

pandas - 如何显示第 n 行和最后一行