При разбиении DataFrame выводит только первый столбец
Написал функцию, которая которая разбивает DataFrame на n DataSet:
def split_dataframe(dataframe, n_splits = 4):
num_data = int(dataframe.shape[0]/(n_splits-1))
data = []
k_start = 0
k_last = num_data
for i in range(1,n_splits+1):
if i == n_splits:
k_start = dataframe.shape[0] - num_data * i
data_ = dataframe.iloc[k_start:]
data.append(data_)
else:
if k_last <=dataframe.shape[0]:
data_ = dataframe.iloc[k_start:k_last]
data.append(data_)
k_start+=num_data
k_last+=num_data
return data
Когда я разделяю DataFrame с помощью этой функции, у меня выводит только первый столбец и первое значение столбца берет как название колонки.
Вот пример:
d = {'a':[1,2,3,4,5,6,7], 'b':[8,9,10,11,12,13,14], 'c': [34,54,12,34,56,78,87]}
df = pd.DataFrame(data=d)
k = split_dataframe(dataframe, n_splits = 3)
k[1]
0
12 4
12 5
1245 6
Должно быть вот так:
a b c
4 5 12 56
5 6 13 78
Как сделать правильно?
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Если я правильно понял код в вопросе - вы пытаетесь написать собственную (неэффективную) реализацию функции numpy.split().
Решение:
n = 3
res = np.split(df, np.arange(n, len(df), n))
Результат:
In [47]: res[0]
Out[47]:
a b c
0 1 8 34
1 2 9 54
2 3 10 12
In [48]: res[1]
Out[48]:
a b c
3 4 11 34
4 5 12 56
5 6 13 78
In [49]: res[2]
Out[49]:
a b c
6 7 14 87