Сплит Dataframe с некоторыми условиями - PullRequest
2 голосов
/ 18 февраля 2020

Цель:

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

Вот мой текущий код:

import pandas as pd
import math

splitter = 3

df = pd.read_csv('account.csv')
q_rows = df.shape[0]                                # Number of rows
q_rows_x_dataframe = math.ceil(q_rows / splitter)   # Quantity of rows for splitter

for index, row in df.iterrows():
    row.shift(q_rows_x_dataframe + 1)

>>> df
   network  value
0        A   1400
1        B   1300
2        C   1200
3        D   1100
4        E   1000
5        F    900
6        G    800
7        H    700
8        I    600
9        J    500
10       K    400
11       L    300
12       M    200
13       N    100

Это мой желаемый вывод:

A   1400
D   1100
G   800
J   500
M   200


B   1300
E   1000
H   700
K   400
N   100


C   1200
F   900
I   600
L   300

Ответы [ 2 ]

3 голосов
/ 18 февраля 2020

Группа с модулем индекса должна работать:

splitter = 3
[g for _, g in df.groupby(df.index % splitter)]

[   network  value
 0        A   1400
 3        D   1100
 6        G    800
 9        J    500
 12       M    200,    network  value
 1        B   1300
 4        E   1000
 7        H    700
 10       K    400
 13       N    100,    network  value
 2        C   1200
 5        F    900
 8        I    600
 11       L    300]
2 голосов
/ 18 февраля 2020

Используйте это для создания словаря данных:

splitter = 3
dict(tuple(df.groupby(df.index % splitter)))

Вывод:

{0:    network  value
 0        A   1400
 3        D   1100
 6        G    800
 9        J    500
 12       M    200, 1:    network  value
 1        B   1300
 4        E   1000
 7        H    700
 10       K    400
 13       N    100, 2:    network  value
 2        C   1200
 5        F    900
 8        I    600
 11       L    300}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...