Python 保存在Excel错误-';列表';对象没有属性';到excel';
我试图将结果保存在excel中,但出现错误-“list”对象没有“to_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
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希望您已经解决了您的问题。我进一步编辑了建议的代码,对其进行了微调(基于我以前所做的工作)。是的,它适合我。非常感谢。