我有以下 Dataframe :
feature
0 1
1 0
2 0
3 0
4 0
5 1
6 0
7 1
我想创建一个2列,其中将包括当前行与上一个和下一个正值之间的行数。输出 Dataframe 应如下所示:
feature previous_feat next_feat
0 1 NA 5
1 0 1 4
2 0 2 3
3 0 3 2
4 0 4 1
5 1 5 2
6 0 1 1
7 1 2 NA
我已经尝试过 * shift * 和 * mask * 方法的组合,但是我没有成功。请注意,可能是行数或索引差对我来说并不重要。对于NA值也是一样,可能是NA或0。
import pandas as pd
df = pd.DataFrame({"feature": [1, 0, 0, 0, 0, 1, 0, 1]})
# df["previous_feat"] = df.shift().mask(df["feature"] != 0)
2条答案
按热度按时间9fkzdhlc1#
您可以使用
groupby.cumcount
和布尔掩码:输出:
tcomlyy62#