Это проще сделать, используя pd.cut
, чтобы разделить фрейм данных на интервалы, а затем df.groupby
, чтобы сгруппировать значения по интервалам. Затем просто используйте метод sum()
над объектом groupby для суммирования всех значений в каждом интервале.
Вы не предоставили никакого примера, поэтому приведенный ниже код действует на Dataframe со столбцом Value
, содержащим случайные значения от 0 до 1, которые я затем группирую по интервалам 0,1:
import pandas as pd
import numpy as np
np.random.seed(42) # for reproductibility
df = df = pd.DataFrame({'Value': np.random.random(size=100)})
print(df)
# output:
#
# Value
# 0 0.374540
# 1 0.950714
# 2 0.731994
# 3 0.598658
# 4 0.156019
# .. ...
# 95 0.493796
# 96 0.522733
# 97 0.427541
# 98 0.025419
# 99 0.107891
#
# [100 rows x 1 columns]
grouped_df = df.groupby(pd.cut(df['Value'], np.arange(0, 1, 0.1))).sum()
print(grouped_df)
# output:
#
# Value
# Value
# (0.0, 0.1] 0.699045
# (0.1, 0.2] 2.372805
# (0.2, 0.3] 1.606776
# (0.3, 0.4] 4.057759
# (0.4, 0.5] 3.216896
# (0.5, 0.6] 5.521448
# (0.6, 0.7] 4.428124
# (0.7, 0.8] 8.954358
# (0.8, 0.9] 7.598556
Обратите внимание, что np.arange(0, 1, 0.1))
- это просто удобный способ определить массив интервалов размера исправлений, которые мы затем используем для сокращения наших dataframe - пользователем. в моем примере это массив:
array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
Вам просто нужно изменить эту часть диапазона значений, которые вы хотите использовать в качестве интервалов, например (10000.0,5000000.0,10000.0)
.