保存在 Excel 中错误 - "列表"对象没有属性"to_excel"



我试图将结果保存在excel中,但我得到了错误- 'list'对象没有属性'to_excel'。除了最后一行(保存结果),我运行整个代码没有问题。

你能帮我找出错误吗?谢谢你
from collections import Counter
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.cluster import KMeans 
from sklearn.preprocessing import StandardScaler
from scipy.spatial import distance
df1=pd.read_csv("Clus_readinFile.csv", index_col="Site_ID")
df1.head(5)
# Standardization (z-score)
scaler = StandardScaler()
df_std = scaler.fit_transform(df1)
df_std
centroids_All = []
for cluster in range(1,15):
kmeans = KMeans(n_jobs = -1, n_clusters = cluster, init='k-means++')
kmeans.fit(df_std)
counts = dict(Counter(kmeans.labels_))
counts = pd.DataFrame.from_dict(counts, orient='index',  columns=['Stores'])
centroids_deno = pd.DataFrame(scaler.inverse_transform(kmeans.cluster_centers_),columns= df1.columns)
centroids_deno['Stores'] = counts['Stores']
centroids_All.append(centroids_deno)
centroids_All.to_excel("centroidsAllResult.xlsx")

to_excel()函数定义在pandas对象下,可以由pandas DataFrame对象调用。但是,要调用to_excel()函数的对象centroids_All被定义为一个列表。虽然您将pandas Dataframe添加到列表centroids_All中,但它本身仍然不是pandas Dataframe。因此出现了错误。

你可以使用DataFrame .append()在循环中追加/连接你的结果DataFrame,而不是使用列表追加。然后使用生成的DataFrame对象调用to_excel()

只需将代码centroids_All = []更改为:

centroids_All = pd.DataFrame()

这将创建一个空的pandas DataFrame,而不是空的列表。

附加DataFrame的代码只需要稍加修改(幸运的是,它的语法与附加列表的代码相似)。将ignore_index=True添加到append()调用中,以便重新序列化索引。结果代码是:

centroids_All = centroids_All.append(centroids_deno, ignore_index=True)

注意将追加的结果重新赋值给合并的数据帧。

最新更新