计算每5行特定列的平均值,并在pandas数据框中选择另一列的最后一个数据(第五个)

时间:2018-08-06 04:43:08

标签: python python-2.7 pandas dataframe

我有pandas df,说100行4列。我想每5行计算特定列(“值”)中的平均值,然后选择另一列(“日期”)的最后一个数据(第五个)以保留在新数据框中。我该怎么办?

我的数据框如下:

>>df
          Date     Product     Location       Value
0   12-08-2018           A           S1       1.313
1   12-08-2018           B           S1       3.089
2   12-08-2018           C           S1       1.890
3   12-08-2018           D           S1       3.136
4*  12-08-2018           E           S1       3.258
5   13-08-2018           F           S1       3.113
6   13-08-2018           G           S1       2.651
7   13-08-2018           H           S1       2.135
8   13-08-2018           I           S1       1.555
9*  14-08-2018           J           S1       2.009
10  14-08-2018           K           S1       1.757
11  14-08-2018           L           S1       1.808
12  14-08-2018           M           S1       1.511
13  15-08-2018           N           S1       2.265
14* 15-08-2018           O           S1       2.356

,我想将其变成新的数据框,如下所示:

>> new_df
      Date           Value
0  12-08-2018       2.5372
1  14-08-2018       2.2926
2  15-08-2018       1.9394

可以帮帮我吗?

注意:我在每5行添加*以便于观察。

1 个答案:

答案 0 :(得分:1)

groupbyagglast一起使用,将meannp.arange并将底数除以5来聚合:

df = df.groupby(np.arange(len(df)) // 5).agg({'Date':'last', 'Value':'mean'})
print (df)
         Date   Value
0  12-08-2018  2.5372
1  14-08-2018  2.2926
2  15-08-2018  1.9394

如果应该简化默认的RangeIndex解决方案:

df = df.groupby(df.index // 5).agg({'Date':'last', 'Value':'mean'})

详细信息

print (np.arange(len(df)) // 5)
[0 0 0 0 0 1 1 1 1 1 2 2 2 2 2]