2017-04-05 16 views
0

我的代码:类型错误:“数据帧”对象是可变的,因此它们不能被散列

samples = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data", sep=',',header=None) 
varieties = pd.DataFrame(samples.iloc[:,0]) 
kmeans = KMeans(n_clusters = 3) 
labels = kmeans.fit_predict(samples) 
#setting 'labels' according to given data 
labels += 1 
#converting 'labels' to pandas DataFrame 
labels = pd.DataFrame(labels) 
df = pd.DataFrame({'labels':[labels], 'varieties':[varieties]}) 
ct = pd.crosstab(df['labels'],df['varieties']) 

我想用这些dataframes(标签和品种)为“交叉”功能。 请让我知道我该怎么做?

+1

的可能的复制[“类型错误:‘数据帧’对象是可变的,因此它们不能被散列”,而分选大熊猫数据帧指数](http://stackoverflow.com/questions/43054217/typeerror-dataframe-objects -are-可变-由此它们-不能待哈希-而-S) – Jedi

回答

0

为什么要将标签存储在单独的数据框中?可能更容易将它作为variaties数据框中的新列进行保存,然后在这两列之间运行交叉表。

samples = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data", sep=',',header=None) 
varieties = pd.DataFrame(samples.iloc[:,0]) 
kmeans = KMeans(n_clusters = 3) 
varieties['labels'] = kmeans.fit_predict(samples) 
#setting 'labels' according to given data 
varieties['labels'] += 1 
pd.crosstab(varieties.iloc[:,0], varieties['labels']) 
相关问题