如何计算数据框中的每个组,然后将组计数附加到摘要数据框中?
我是Python的新手
我设置了一个空的DataFrame
Counts_data=pd.DataFrame(columns=['filename','Green','Stubble','Baresoil','Stones','Shadow'])
然后我通过图像开始一个For循环 在循环中,我创建了一个RGBgroups的DataFrame。(通过knn模型根据像素RGB预测的结果)
df_img_pred=pd.DataFrame(knn.predict(df_img_data),columns=['RGBgroup'])
print(df_img_pred.head())
Img_counts=df_img_pred.stack().value_counts()
输出为
RGBgroup
0 BareSoil
1 Stubble
2 Stubble
3 Stubble
4 BareSoil
BareSoil 56507
Stubble 52751
Shadow 5030
Stones 4267
Green 245
dtype: int64
我想对每个组进行计数,并将结果与图像的文件名一起添加到“ Counts_data”数据框中。我尝试了多种过滤,计数和追加方法,但无法正常工作。
任何帮助将不胜感激。
答案 0 :(得分:0)
您应该创建一个列表,将每个新输出附加到该列表中,完成后将列表转换为DataFrame
。增大DataFrame
是非常昂贵的操作。
如果只需要简单的计数,请考虑使用Counter
模块中的collections
。
答案 1 :(得分:0)
您可以一次创建一个数据框:
# list append is much more efficient
# than operating a dataframe
s = []
for row in stat_df:
s.append(row)
# create a dataframe
labels = ['file1', 'file2', 'file3']
df = pd.DataFrame(s, columns=labels)
您可以将stat_df
替换为预测df,并相应地创建标签。