潇潇雨雨
我想这就是你要找的东西?您可以使用不同集群的列表,以这种方式使您的标签任意。import pandas as pddata = {'name':['bob','sue','mary','steve'], 'age':[11, 23, 53, 44]}df = pd.DataFrame(data)print(df)df['label'] = 0cluster1 = [0, 3]cluster2 = [1, 2]df.loc[cluster1, 'label'] = 1df.loc[cluster2, 'label'] = 2 #another way#df.iloc[cluster1, df.columns.get_loc('label')] = 1#df.iloc[cluster2, df.columns.get_loc('label')] = 2print(df)输出: name age0 bob 111 sue 232 mary 533 steve 44 name age label0 bob 11 11 sue 23 22 mary 53 23 steve 44 1您可以让初始列创建为任何内容。因此,您可以将其设置为集群值之一(这样您只需手动设置另一个集群,而不是同时设置两者),也可以将其设置为集群值,这样您就可以在分配标签后轻松检查是否错过了任何集群None值行。如果对集群的分配确实是任意的,我认为您无法比这更自动化。
慕妹3242003
这是您正在寻找的解决方案吗?我将数据加倍,以便您可以尝试不同的序列。在这里,如果您编写 create_label(df, 3) 而不是 2,它将以 3 乘 3 的方式进行迭代。它为您提供了获得参数化解决方案的机会。import pandas as pddf = pd.DataFrame({'name': ['john', 'mary', 'joseph', 'maria', 'john', 'mary', 'joseph', 'maria'], 'age': [12, 13, 12, 14, 12, 13, 12, 14], 'sex': ['m', 'f','m', 'f', 'm', 'f','m', 'f']})df.index = df.index + 1df['label'] = pd.Series()def create_label(data, each_row): i = 0 j = 1 while i <= len(data): data['label'][i: i + each_row] = 'label' + str(j) i += each_row j += 1 return datadf_new = create_label(df, 2)