gpt4 book ai didi

python - 如何平均每 5 行特定列并从 Pandas 的另一列中选择最后一个数据

转载 作者:行者123 更新时间:2023-12-01 01:42:45 26 4
gpt4 key购买 nike

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

我的数据框如下所示:

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

现在我可以通过这段代码对每 5 行进行平均:

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

代码结果:

>> new_df
DateTime Value
0 12-07-2018 2.5372
1 14-07-2018 2.2926
2 15-07-2018 1.9394
3 15-07-2018 3.1250

但最后两行是平均的。 (2.950+3.300)/2 = 3.1250。如果有1,2,3,4行,则按行数平均。

我只想平均 5 行。如果没有 5 行,则不求平均值并发送到 new_df

我怎样才能做到这一点?

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

最佳答案

据我所知,您的请求相当于在聚合之前将 df 截断为可被 5 整除的长度。您可以即时使用切片:

new_df = df.groupby(df[:(len(df)//5)*5].index // 5).agg({'DateTime':'last', 'Value':'mean'})

关于python - 如何平均每 5 行特定列并从 Pandas 的另一列中选择最后一个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51704073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com