如何将pandas.core.series.Series和numpy.int32合并到pandas.core.frame.DataFrame?

时间:2019-07-30 05:53:12

标签: python pandas dataframe

我有一个df,在此数据上,我建立了一些聚类模型,并找到了标签,即以数组形式获取的标签,现在我需要合并数据和标签

data = [['M', 10, 'red','apple'], 
        ['F', 15, 'blue','orange'], 
        ['M', 14, 'blue','apple'],
        ['M', 14, 'blue','apple'], 
        ['F', 14, 'blue','apple'], 
        ['M', 14, 'red',''], 
        ['M', 14, 'blue','banana'], 
        ['', 14, 'blue','apple']] 

df = pd.DataFrame(data, columns = ['Gender', 'Age', 'Color','Fruit']) 

df被编码为数字,然后标签被获取为

df_encode = OneHotEncoder(df)
kmeans = KMeans(n_clusters= 2)
kmeans.fit(df_encode.values)
labels = kmeans.labels_
type(labels)
Out[120]: numpy.ndarray
labels
Out[122]: array([1, 0, 1, 0, 1, 1, 0, 0])

我对它们的看法如下

for i in range(len(df_encode)):
    print("coordinate:",df_encode.iloc[i], "label:", labels[i]) 

这给出了类似的输出

coordinate: 
Gender      1.0
Age        10.0
Color       0.0
Fruit       1.0
label: 0

在这里我应该如何将标签合并为df_encode数据框中的一列?

1 个答案:

答案 0 :(得分:1)

将其转到列表并将其附加到数据框:

kmf2labels = labels.tolist()
df_encode['labels'] = kmf2labels 

输出:

df_encode['labels']
Out[39]: 
0    1
1    0
2    0
3    0
4    0
5    0
6    0
7    0
Name: labels, dtype: int64
相关问题