【问题标题】:Creating ID for every row based on the observations in variable根据变量中的观察为每一行创建 ID
【发布时间】:2023-01-13 20:44:26
【问题描述】:
想要创建一个系统,其中变量中的观察值使用 Python 引用数字。来自(在本例中)5 个不同变量的所有数字共同构成一个唯一代码。第一个数字对应于第一个变量。当不同行中的观察值与第一行相同时,应用相同的数字。如示例中所示,如果苹果出现在第 1 行和第 3 行,则两个 ID 的第一个数字都是“1”。
输出应该给出一个带有 ID 的新列。如果一行中的所有观察值都相同,则 ID 将相同。在下图中,您可以看到 5 个变量导致右侧的唯一 ID,这应该是输出。
【问题讨论】:
标签:
python
pandas
for-loop
dataset
variable-assignment
【解决方案1】:
你可以使用pd.factorize:
df['UniqueID'] = (df.apply(lambda x: (1+pd.factorize(x)[0]).astype(str))
.agg(''.join, axis=1))
print(df)
# Output
Fruit Toy Letter Car Country UniqueID
0 Apple Bear A Ferrari Brazil 11111
1 Strawberry Blocks B Peugeot Chile 22222
2 Apple Blocks C Renault China 12333
3 Orange Bear D Saab China 31443
4 Orange Bear D Ferrari India 31414