gpt4 book ai didi

python - 每四行平均一次,但保留时间戳值

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:35 25 4
gpt4 key购买 nike

pandas 中对数据帧中每四行进行平均的最快方法是什么?

我的问题是我有一个程序每 15 秒记录一次数据,如下所示:

1477892758, 10
1477892773, 20
1477892788, 30
1477892803, 40
1477892818, 15
1477892833, 25
1477892848, 35
1477892863, 45

...等,其中第一列是 Unix 时间戳,第二列是数据(我的真实数据集有更多列)。

我只想每分钟获取一次数据。我怎样才能平均每四行的数据但仍保留有意义的时间戳?理想情况下,时间戳将是系列中的第一个,所以我最后会有这样的东西:

1477892758, 25
1477892818, 30

最佳答案

您可以使用 groupby by index floor 除以 4aggregate对于第一列 first 和第二列 mean:

df = pd.DataFrame({'B': {0: 10, 1: 20, 2: 30, 3: 40, 4: 15, 5: 25, 6: 35, 7: 45}, 'A': {0: 1477892758, 1: 1477892773, 2: 1477892788, 3: 1477892803, 4: 1477892818, 5: 1477892833, 6: 1477892848, 7: 1477892863}})
print (df)
A B
0 1477892758 10
1 1477892773 20
2 1477892788 30
3 1477892803 40
4 1477892818 15
5 1477892833 25
6 1477892848 35
7 1477892863 45
print (df.index // 4)
Int64Index([0, 0, 0, 0, 1, 1, 1, 1], dtype='int64')

print (df.groupby(df.index // 4).agg({'A':'first', 'B':'mean'})[['A','B']])
A B
0 1477892758 25
1 1477892818 30

如果第一列是index 使用reset_index第一:

df = pd.DataFrame({'A': [10, 20, 30, 40, 15, 25, 35, 45]}, index=[1477892758, 1477892773, 1477892788, 1477892803, 1477892818, 1477892833, 1477892848, 1477892863])
print (df)
A
1477892758 10
1477892773 20
1477892788 30
1477892803 40
1477892818 15
1477892833 25
1477892848 35
1477892863 45
df.reset_index(inplace=True)
df.columns = list('AB')
print (df)
A B
0 1477892758 10
1 1477892773 20
2 1477892788 30
3 1477892803 40
4 1477892818 15
5 1477892833 25
6 1477892848 35
7 1477892863 45


print (df.groupby(df.index // 4).agg({'A':'first', 'B':'mean'})[['A','B']])
A B
0 1477892758 25
1 1477892818 30

关于python - 每四行平均一次,但保留时间戳值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40722963/

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