У меня есть очень большой DF, который содержит данные, такие как следующие:Переменный размер Chunk Панды Dataframe
import pandas as pd
df = pd.DataFrame()
df['CODE'] = [1,2,3,1,2,4,2,2,4,5]
df["DATA"] = [ 'AA', 'BB', 'CC', 'DD', 'AA', 'BB', 'EE', 'FF','GG', 'HH']
df.sort_values('CODE')
df
CODE DATA
0 1 AA
3 1 DD
1 2 BB
4 2 AA
6 2 EE
7 2 FF
2 3 CC
5 4 BB
8 4 GG
9 5 HH
из-за размера, мне нужно разбить его на куски и разобрать его. Однако элемент equals, содержащийся в столбце CODE, не должен заканчиваться в разных фрагментах, вместо этого они должны быть добавлены в предыдущий фрагмент, даже если размер превышен.
В принципе, если я выбрать размер куска 4 строк, первая порция может быть увеличена до включать все элементы с «2» и быть:
chunk1:
CODE DATA
0 1 AA
3 1 DD
1 2 BB
4 2 AA
6 2 EE
7 2 FF
Я нашел некоторые сообщения о комков и группировки, как следующее :
split dataframe into multiple dataframes based on number of rows
Однако выше, обеспечивают одинаковый размер комков и мне нужен умный отрывов, который учитывает значения в столбце кода.
Любые идеи, как это сделать?
но с N = 2, например, я заканчиваю разделение строк, имеющих CODE равным 2. Вместо этого я бы сохранил их в одном куске. – user2320577
Хммм, я понимаю, что вам нужно разделить каждую группу по столбцу «Код» на большее количество групп, потому что большие данные. Таким образом, вы можете использовать большие 'N', такие как 1000, а затем разделять на 1000 рядов строк. Или я что-то не хватает? – jezrael
Если используется разделение пола, например, попробуйте 'N = 3' получить последнюю группу с размером' 1' - получить ту же самую длину для большинства групп, но последнее может быть обрезано меньше. – jezrael