我有一个数据集,其连续的行带有'标记'(数字0,1,2,....),表示所有这些行都属于同一个“图片”(例如marker = [0, 0,0,0,1,1,1,2,2,2,2,2,....])。现在我希望我的程序能够给出每个“图片”的平均值,例如,所有数字= 0都属于图片0并计算该标记内整个数据框的平均值。到目前为止,我试过这个:
###Read data in:
df = pd.read_csv(path_i, sep = ",")
#### Calculate means per picture:
number = 0
for i in df:
picture = df.marker[number]
means = df.mean(picture)
number = number + 1
我的代码给了我输出:但是每行都是一样的:我认为因为我期待大约96张图片,它给了我整个数据框的平均值。
Unnamed: 0 18547.000000
index 18548.000000
pos_time 341778.900067
pos_x -95.375306
pos_y -64.948367
pup_time 341778.900067
pup_diameter 3.116594
marker 48.336649
which_AOI 1.637822
fixation 17.559536
dtype: float64
答案 0 :(得分:0)
您需要groupby
并汇总mean
:
df1 = df.groupby('marker').mean()
如果需要marker
作为输出中的列:
df1 = df.groupby('marker', as_index=False).mean()
df1 = df.groupby('marker').mean().reset_index()