Равный кадр данных панд, разделенный суммой на 2 столбца - PullRequest
0 голосов
/ 08 июля 2019

Мне нужно найти быстрое решение разбить фрейм данных панд на несколько частей по двум условиям.

Данные испытаний:

import pandas as pd

df=pd.DataFrame({'col1':[1,2,23,4,5,6],'col2':[10,11,12,13,14,89]})

   col1  col2
0     1    10
1     2    11
2     23   12
3     4    13
4     5    14
5     6    89

Нужно это разделить на куски, как [обратите внимание, что для многопользовательской игры 0,1 нужно рассчитать, чтобы деление работало]:

divider_number = 2
split_value_1 = df['col1'].sum()/divider_number
split_value_2 = df['col2'].sum()/divider_number
eps_1 = 0.1* split_value_1
eps_2 = 0.1* split_value_2

, где каждый кусок имеет строки, сумма которых равна:

split_value_1 - eps_1 < sum_col1 < split_value_1 + eps_1

и

split_value_2 - eps_2 < sum_col2 < split_value_2 + eps_2

Я имею в виду, что в конце каждого кадра содержатся строки, сумма элементов в столбце 1 и в столбце 2 близка к сумме элементов всех остальных разделенных фреймов данных.

Я пытаюсь перебрать каждую строку, собрать значения и затем проверить условия внутри цикла while, которые перетасовывают фрейм данных, но это решение кажется мне очень грубым.

Ожидаемый результат примерно такой:

df1:

   col1  col2
0     1    10
1     2    11
2     23   12

df2:

   col1  col2
3     4    13
4     5    14
5     6    89

Обратите внимание, что для div_number> 2 в качестве вывода используется оболочка из нескольких фреймов данных.

Спасибо всем за тяжелую работу:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...