#python #python-3.x #pandas #numpy
Вопрос:
Я могу сохранить несколько одномерных массивов в CSV-файл, используя приведенный ниже код
my_df = pd.DataFrame({"name1" : X, "name2" : y})
Кроме того, я могу сохранить один многомерный массив в CSV-файл.
X, y = make_regression(n_samples=10, n_features=2, n_informative=2, n_targets=1, random_state=1, noise=0.5) my_df = pd.DataFrame(X) my_df.to_csv('test_data.csv', index=False, header=True)
Вот X
многомерный массив, и я получаю файл CSV, который содержит значение X
в 2 отдельных столбцах (как и ожидалось).
Теперь, если я хочу сохранить оба X
и y
в отдельных столбцах одного и того же CSV-файла и если я хочу дать имена X1
, X2
, y1
, и y2
что мне нужно изменить в коде?
Мой ожидаемый CSV-это значение X
и y
, сгенерированное make_regression
функцией. Из функции мы получаем 2-мерную X
и двумерную y
. Таким образом, CSV должен содержать 4 столбца (скажем, X1, X2, y1, y2).
Значение X (форма: (10, 2)) я получаю из функции make_regression
[[ 1.62434536 -0.61175641] [ 0.04221375 0.58281521] [-0.52817175 -1.07296862] [ 1.74481176 -0.7612069 ] [ 1.13376944 -1.09989127] [ 0.86540763 -2.3015387 ] [ 1.46210794 -2.06014071] [ 0.3190391 -0.24937038] [-0.3224172 -0.38405435] [-0.17242821 -0.87785842]]
Значение y (форма: (10,2))
[[ 7.08380317e 01 -1.49989469e-01] [ 4.25574119e 01 5.08213909e 01] [-1.10263835e 02 -1.06685245e 02] [ 6.81167780e 01 -8.67912040e 00] [ 3.76517652e 00 -5.56565286e 01] [-9.82592158e 01 -1.64522187e 02] [-4.06045719e 01 -1.25819174e 02] [ 4.61069914e 00 -1.11695124e 01] [-4.92313307e 01 -4.21097213e 01] [-7.22908927e 01 -7.91525111e 01]]
Ожидаемый результат
X1 X2 y1 y2 1.62434536 second column fo the X 0.04221375 -0.52817175 1.74481176 1.13376944 0.86540763 1.46210794 0.3190391 -0.3224172 -0.17242821
Комментарии:
1. CSV в основном предназначен для хранения таблиц, но я думаю, что вы также можете хранить в нем массив; Можете ли вы предоставить первые несколько строк ожидаемого CSV-файла?
2. @Fravadona спасибо за комментарий. Мой ожидаемый CSV-это значение
X
иy
, сгенерированноеmake_regression
функцией. Из функции мы получаем 2-мернуюX
и двумернуюy
. Таким образом, CSV должен содержать 4 столбца (скажем, X1, X2, y1, y2). Дайте мне знать, если мне нужно будет подробнее объяснить проблему.3. Numpy
concatenate
может быть тем, что вы ищете:my_df = pd.DataFrame( np.concatenate((X, y), axis=0) )
работает ли это для вас ?4. @Fravadona должен
axis=1
в соответствии с вопросом5. опси, ты прав @0Knowledge 😉
Ответ №1:
Вы можете использовать панд concat
. Я не уверен в том , какое имя вам хотелось бы X1
, X2
и так далее.
X, y = make_regression(n_samples=10, n_features=2, n_informative=2, n_targets=2, random_state=1, noise=0.5) print(X, y) full_df = pd.concat([pd.DataFrame(X),pd.DataFrame(y)],axis=1, ignore_index=True) full_df.to_csv('test_data.csv', index=False, header=True) print(full_df)
X и y из функции
[[ 1.62434536 -0.61175641] [ 0.04221375 0.58281521] [-0.52817175 -1.07296862] [ 1.74481176 -0.7612069 ] [ 1.13376944 -1.09989127] [ 0.86540763 -2.3015387 ] [ 1.46210794 -2.06014071] [ 0.3190391 -0.24937038] [-0.3224172 -0.38405435] [-0.17242821 -0.87785842]] [[ 7.08380317e 01 -1.49989469e-01] [ 4.25574119e 01 5.08213909e 01] [-1.10263835e 02 -1.06685245e 02] [ 6.81167780e 01 -8.67912040e 00] [ 3.76517652e 00 -5.56565286e 01] [-9.82592158e 01 -1.64522187e 02] [-4.06045719e 01 -1.25819174e 02] [ 4.61069914e 00 -1.11695124e 01] [-4.92313307e 01 -4.21097213e 01] [-7.22908927e 01 -7.91525111e 01]]
Вывод после concat
0 1 2 3 0 1.624345 -0.611756 70.838032 -0.149989 1 0.042214 0.582815 42.557412 50.821391 2 -0.528172 -1.072969 -110.263835 -106.685245 3 1.744812 -0.761207 68.116778 -8.679120 4 1.133769 -1.099891 3.765177 -55.656529 5 0.865408 -2.301539 -98.259216 -164.522187 6 1.462108 -2.060141 -40.604572 -125.819174 7 0.319039 -0.249370 4.610699 -11.169512 8 -0.322417 -0.384054 -49.231331 -42.109721 9 -0.172428 -0.877858 -72.290893 -79.152511
Ответ №2:
На основе вашего обновления:
Вы можете нарезать массив numpy, как панды.
import numpy as np import pandas as pd x = np.array([np.arange(0, 10), np.arange(10,20)]) x.reshape(10, 2) pd.DataFrame({ 'x0': x[0, :], 'x1': x[1, :] })
Комментарии:
1. Не могли бы вы привести здесь полный пример?
2. @Opps_0 добавил пример
3. Спасибо, но я думаю, что это не послужит моей цели. Потому что мои X и y генерируются из функции
make_rgression
не отдельно.4. Можете ли вы показать пример вывода? @Opps_0
5. Можете ли вы просто составить пример кода того, как выглядит ваш вывод и как вы хотите, чтобы вывод выглядел как @Opps_0