熊猫为列中的所有唯一值分配相同的值

时间:2021-03-14 15:29:00

标签: python pandas dataframe pandas-groupby

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_targetlen(df['final_target'].unique()) # 822 )的总长度相同(100,000 个样本)。

1 个答案:

答案 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)))