Сделайте бункеры более грубыми на pandas кадре данных и суммируйте их в столбцах подсчета - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть фрейм данных с переменной (E), где значение в фрейме данных является левым краем бина, и набор заполнений для каждого бина (n) (и квадрат неопределенности (v)). На данный момент они сгруппированы с 200 по 2000 с шагом 100 (обычно), затем с 2000 по + инф. Однако эти ячейки очень хороши для построения, которое мне нужно выполнить, и мне нужно перебить их в 200, 300, 400, 600, 1000, + инф.

Ключевой пункт : Потому что Я читаю несколько наборов данных, подобных этой, из источника, не во всех моих фреймах данных есть записи, например, для бина 600-700, т. Е. Некоторые строки будут отсутствовать в одном фрейме данных, в то время как другие могут иметь записи для них. Мне нужно перебрать и сложить n и v на основе новых бинов, учитывая тот факт, что мои кадры данных не являются «обычными».

Вот примерный кадр данных:

        E       n       v
0       200.0   26.0    1.3 
1       300.0   56.0    2.2
2       400.0   62.0    2.5
3       500.0   55.0    2.2
4       600.0   24.0    1.7
5       800.0   12.0    1.3
6       900.0   8.0     0.9
7       1000.0  4.0     0.6
8       1100.0  1.0     0.2

И вот мой желаемый результат:

        E       n       v
0       200.0   26.0    1.3 
1       300.0   56.0    2.2
2       400.0   117.0   4.7
3       600.0   44.0    3.9
4       1000.0  5.0     0.8

Любая помощь или руководство очень ценится.

1 Ответ

1 голос
/ 29 апреля 2020

IIU C cut с agg

s=df.groupby(pd.cut(df.E,[200,300,400,600,1000,np.inf],right=False)).agg({'E':'first','n':'sum','v':'sum'})

s.E=s.index.map(lambda x :x.left)
s.reset_index(drop=True,inplace=True)
s
        E      n    v
0   200.0   26.0  1.3
1   300.0   56.0  2.2
2   400.0  117.0  4.7
3   600.0   44.0  3.9
4  1000.0    5.0  0.8
...