我的数据框架的第一列ID如下。
ID
A123
A234
A456
A123
A234
现在我需要创建一个新的列指示器 在每个重复的ID前面添加一个指示器。
希望的输出。
ID Indicator
A123 1
A234 1
A456 0
A123 1
A234 1
在Pandas中,一旦你掌握了它的窍门,这是一个非常简单的操作,所以你可能需要在教程中投入一些时间。你需要做的是调用方便的函数--------------。duplicated()
的 ID
列,一个 pandas.core.series.Series
. 所以..:
import pandas as pd
df = pd.DataFrame(["A123", "A234", "A456", "A123", "A234"], columns=["ID"])
df.ID.duplicated()
0 False
1 False
2 False
3 True
4 True
Name: ID, dtype: bool
它返回一个 Series
与布尔值。你可以把新的 Series
并称其 apply
函数,然后返回一个 Series
值,并使用返回的 apply
. 因此,要把每个布尔值变成0或1,你需要做的就是应用 int
:
df.ID.duplicated().apply(int) // or df["ID"].duplicated().apply(int)
0 0
1 0
2 0
3 1
4 1
Name: ID, dtype: int64
有很多其他公约功能 Series
. 如果你需要做一些更复杂的事情,你可以 apply()
自定义函数,例如
def custom_function(value):
return str(int(value))
df.ID.duplicated().apply(custom_function)
0 0
1 0
2 0
3 1
4 1
Name: ID, dtype: object
您也可以使用 apply()
的 DataFrame
本身来调用所有行或列的函数,使用 axis
.