Как разделить датафрейм на равное количество подмножеств в Python? - PullRequest
2 голосов
/ 14 апреля 2019

У меня есть фрейм данных

import pandas as pd
d = {'user': [1, 1, 2,2,2,2 ,2,2,2,2], 'friends': 
[1,2,1,5,4,6,7,20,9,7]}
df = pd.DataFrame(data=d)

Я пытаюсь разбить df на несколько n частей в цикле.Например, для n=3

n=3
for i in range(3):
   subdata = dosomething(df)
   print(subdata)

результат будет примерно таким же, как

# first loop
   user friends
0   1   1
1   1   2
2   2   1
3   2   5

# second loop
   user friends
0   2   4
1   2   6
2   2   7
3   2   20 

#third loop
   user friends
0   2   9
1   2   7

1 Ответ

1 голос
/ 15 апреля 2019

Вы можете использовать iloc и просматривать циклы данных, помещая каждый новый кадр данных в словарь для последующего вызова.

dfs = {}
chunk = 4

Цикл по кадрам данных по размерам блоков. Создайте df и добавьте в dict.

for n in range((df.shape[0] // chunk + 1)):
    df_temp = df.iloc[n*chunk:(n+1)*chunk]
    df_temp = df_temp.reset_index(drop=True)
    dfs[n] = df_temp

Используйте этот оператор if для любых оставшихся строк в конце.

if df.shape[0] % chunk != 0:
    df_temp = df.iloc[-int(df.shape[0] % chunk):]
    df_temp = df_temp.reset_index(drop=True)
    dfs[n] = df_temp
else:
    pass

Доступ к фреймам данных в словаре.

print(dfs[0])

   user  friends
0     1        1
1     1        2
2     2        1
3     2        5

print(dfs[1])

   user  friends
0     2        4
1     2        6
2     2        7
3     2       20

print(dfs[2])

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