Python 保存在Excel错误-';列表';对象没有属性';到excel';

Python 保存在Excel错误-';列表';对象没有属性';到excel';,python,dataframe,k-means,Python,Dataframe,K Means,我试图将结果保存在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.cluste

我试图将结果保存在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\u All
被定义为列表。虽然您将pandas数据帧附加到列表
质心\u All
中,但它本身仍然不是pandas数据帧。因此出现了错误

您可以使用在循环中附加/连接生成的数据帧,而不是使用列表附加。然后使用生成的DataFrame对象调用
到\u excel()

只需将代码
质心\u All=[]
更改为:

centroids_All = pd.DataFrame()
这是为了创建一个空数据帧,而不是空列表

附加数据帧的代码只需稍作更改(幸运的是,语法与附加列表的代码类似)
ignore_index=True
被添加到append()调用中,以便重新序列化索引。生成的代码是:

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

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

质心\u All
是一个列表。列表没有
to_excel()
函数。您实际上希望将什么保存到excel?它应该是dataframeHi Pranav,是的,我想将它另存为dataframe。我觉得我已经通过pd.dataframe将其转换为数据帧。我需要如何更改它?谢谢
centroids\u deno
是您的数据帧。您正在对excel()执行
操作
centroids\u All
上执行
操作。有帮助的链接:|另外,请修复代码的缩进。for循环的内容必须缩进。有关如何使用代码围栏正确格式化代码的帮助,请参阅。嗨,Seabean,我明白你的意思。当cluster=1,2,3,…,15时,如果我想追加并保存结果,我需要如何更改它?谢谢你,康卡特警长。参见doc@Qianru-Song,也可以参考DataFrame.append()函数。文档@QianruSong希望您已经解决了您的问题。我进一步编辑了建议的代码,对其进行了微调(基于我以前所做的工作)。是的,它适合我。非常感谢。