【发布时间】:2022-11-22 18:35:33
【问题描述】:
我有一个包含五列 x、y、r、g 和 b 的数据集 (df3),尽管我只需要使用 x、y 和 r。我想找到 r 值相等的所有连续行的平均值,并将其存储在数据库 (df_final) 中。为此,我生成了一个代码,用于将 r 等于前一行中的所有值存储在临时数据库 (df_inter) 中,以便稍后将所有值的平均值存储在最终数据库 (df_final) 中。代码是这样的:
for i in range(len(df3)):
if df3.iloc[i,3] == df3.iloc[i-1,3]:
df_inter = pd.DataFrame(columns=['x','y', 'r'])
df_inter.append(df3.iloc[i,1],df3.iloc[i,2],df3.iloc[i,3])
df_inter.to_csv(f'Resultados/df_inter.csv', index=False, sep=',')
else:
df_final.append(df_inter['x'].mean(),df_inter['y'].mean(),df_inter['r'].mean())
del [[df_inter]]
gc.collect()
df_inter=pd.DataFrame()
df_inter = pd.DataFrame(columns=['x','y', 'r'])
df_inter.append(df3.iloc[i,1],df3.iloc[i,2],df3.iloc[i,3])
df_final.to_csv(f'Resultados/df_final.csv', index=False, sep=',')
然而,当我执行代码时,我收到此错误消息:
TypeError: cannot concatenate object of type '<class 'numpy.int64'>'; only Series and DataFrame objs are valid
我不确定问题是什么,或者即使有更有效的代码来达到目的。拜托,如果你能帮助我,我将不胜感激。先感谢您。
艾琳
【问题讨论】:
-
提供您的起始 df 的可重现示例可能是有意义的,然后提供您希望输出的样子。
-
为什么是
del [[df_inter]]和gc.collect()?