另一栏的“之前见过”栏

Far*_*eer 1 python pandas

考虑以下数据框:

   a
0  1
1  1
2  2
3  4
4  5
5  6
6  4
Run Code Online (Sandbox Code Playgroud)

是否有一种方便的方法(无需迭代行)来创建一个列,该列代表“之前看到”的每个值 column a。例如,该示例所需的输出是(0 表示以前没有见过,1 表示以前见过):

0
1
0
0
0
0
1
Run Code Online (Sandbox Code Playgroud)

如果这是可能的,是否有一种方法可以通过以前出现的次数而不仅仅是二进制指示器来增强它?

Cam*_*ell 5

应该就是.duplicated()参见文档)。然后,如果您想将其转换为 0 和 1 的整数,而不是Falseand ,您可以在输出上True使用:.astype(int)

pd.DataFrame

df.duplicated(subset="a").astype(int)
0    0
1    1
2    0
3    0
4    0
5    0
6    1
dtype: int32
Run Code Online (Sandbox Code Playgroud)

pd.Series

df["a"].duplicated().astype(int)
0    0
1    1
2    0
3    0
4    0
5    0
6    1
Name: a, dtype: int32
Run Code Online (Sandbox Code Playgroud)

这将标记一个值第一次被“视为”为False,以及所有已被“视为”为 的后续值Trueint通过将其强制为数据类型astype将更改False -> 0并且True -> 1