H,我有一个包含两列的数据集,其中一列是 target
。如果我对 target 中的所有唯一值进行分组,我会得到一个 826
元素数组。我的问题是在尝试根据这种唯一性分配一些值时。
我有一个名为 array
的第二个数组,其中包含总共 826
个值(字符串类型),根据它们在 {{1} 列中的值分配给我数据集中的每一行},这是一个例子。
target
当我尝试遍历目标和数组,并将数组的每个值分配给具有该目标的数据集中的行时,我发现新创建的名为 print(len(df['target'].unique()))
# 826
print(len(array))
# 826
print(array[0])
# "Some string value"
的列只有 {{ 1}} 个唯一值!
final_target
理论上代码似乎没问题,但是在检查 822
列中的唯一值时,我得到:
for target, new_value in zip(df['target'].unique(), array):
df.loc[df["target"] == target, 'final_target'] = new_value
我不知道这有什么问题,我必须注意两列(final_target
和 len(df['final_target'].unique())
# 822
)的总长度相同(100,000 个样本)。
答案 0 :(得分:2)
让我们做
#df['final_target'] = df['target'].astype('category').cat.codes
df['final_target'] = df['target'].replace(dict(zip(df['target'].astype('category').cat.codes, array)))