Я создал 2 фрагмента кода ниже. Метод 2 работает, но метод 1 возвращает неожиданные 0 / большие числа и хотел бы выяснить, почему.
Коде создает список кадров данных определенной длины строки и столбца (7 x 12) из каждого столбца кадра данных.
Я могу ошибаться, но я бы подумал, что метод 1 будет быстрее / эффективнее? В любом случае, не могли бы вы помочь мне понять, почему метод 1 не работает? Любая помощь будет принята с благодарностью.
import numpy as np
import pandas as pd
rand = pd.DataFrame(np.random.normal(loc=0.0, scale=1.0, size=(20, 10)))
l1, l2 = [], []
# Method 1
rand.apply(lambda x: l1.append(pd.DataFrame(x.values.reshape(4, 5))), axis=0)
# Method 2
for c in range(10):
l2.append(pd.DataFrame(rand.iloc[:, c].values.reshape(4, 5)))
Мои результаты:
l1 [0]
0 1 2 3 4
0 1.321089e-311 1.321089e-311 1.321089e-311 1.321089e-311 1.321089e-311
1 1.321089e-311 1.321089e-311 1.321089e-311 1.321089e-311 1.321089e-311
2 1.321089e-311 1.321089e-311 1.321089e-311 1.321089e-311 1.321089e-311
3 1.321088e-311 1.321089e-311 1.321089e-311 1.321089e-311 1.321089e-311
l2 [0]
0 1 2 3 4
0 1.787913 -0.650952 -0.202825 1.004026 0.117248
1 -0.678082 0.939047 0.483811 0.798136 -0.682002
2 0.159300 -0.168461 1.093911 0.417964 -1.601448
3 0.842667 1.602691 0.898461 -0.797576 1.622104
Примечание - для ясности произвели небольшое редактирование имен переменных.
С уважением
Артур