如何将数据附加到DataFrame

时间:2019-01-22 06:16:09

标签: python pandas dataframe

如何计算数据框中的每个组,然后将组计数附加到摘要数据框中?

我是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”数据框中。我尝试了多种过滤,计数和追加方法,但无法正常工作。

任何帮助将不胜感激。

2 个答案:

答案 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,并相应地创建标签。