保存在 Excel 错误 - 'list' 对象没有属性 'to_excel'

Save in Excel error - 'list' object has no attribute '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对象下,可以被pandasDataFrame对象调用。但是,要调用 to_excel() 函数的对象 centroids_All 被定义为一个列表。尽管您将 pandas Dataframe 附加到列表 centroids_All 中,但它本身仍然不是 pandas DataFrame。因此错误。

您可以在循环中使用 Dataframe.append() 到 append/concatenate 生成的 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)

注意将附加结果重新分配回合并数据框。