экспорт в csv и чтение панелей данных мультииндекса - PullRequest
0 голосов
/ 21 января 2019

Мне нужно экспортировать в CSV, а затем снова импортировать DataFrame, который выглядит следующим образом:

    price   ................................................................................................................... hold buy    balance long_size   short_size  minute  hour    day week    month
                       close    high    low open    CCI12   ROC12   CCI15   ROC15   CCI21   ROC21   ...                                     
Time                                                                                    
2015-01-02 14:20:00 97.8515 97.8595 97.8205 97.8345 91.168620   0.000557    95.323467   0.000394    68.073065   0.000348    ... 0.0 0.0 0.0 0.0 0.0 8.660254e-01    -0.500000   0.974928    1.205367e-01    5.000000e-01

где индекс строки представлен меткой времени, а первые 39 столбцов являются подколонками «цены», тогда как остальные находятся на том же уровне «цены». MultiIndex выглядит так

 MultiIndex(levels=[['price', 'tick_counts', 'sell', 'hold', 'buy', 'balance', 'long_size', 'short_size', 'minute', 'hour', 'day', 'week', 'month'], [0, 'close', 'high', 'low', 'open', 'CCI12', 'ROC12', 'CCI15', 'ROC15', 'CCI21', 'ROC21', 'CCI30', 'ROC30', 'CCI40', 'ROC40', 'CCI100', 'ROC100', 'SMA12', 'EWMA12', 'SMA21', 'EWMA21', 'SMA26', 'EWMA26', 'SMA50', 'EWMA50', 'SMA100', 'EWMA100', 'SMA200', 'EWMA200', 'MACD', 'UpperBB10', 'LowerBB10', 'UpperBB20', 'LowerBB20', 'UpperBB30', 'LowerBB30', 'UpperBB40', 'LowerBB40', 'UpperBB50', 'LowerBB50', '']],
           labels=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40]])

Я понятия не имею, как легко сохранить эту структуру при экспорте с помощью df.to_csv () и импорте с помощью df.read_csv (). До сих пор все мои попытки были беспорядочными.

РЕДАКТИРОВАТЬ: если я просто использую как предложено pd.to_csv ("/", index = True), а затем я читаю его обратно с read_csv ("/"), я получаю:

Unnamed: 0  price   price.1 price.2 price.3 price.4 price.5 price.6 price.7 price.8 ... hold    buy balance long_size   short_size  minute  hour    day week    month
0   NaN close   high    low open    CCI12   ROC12   CCI15   ROC15   CCI21   ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1   Time    NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2   2015-01-02 14:20:00 97.85149999999999   97.8595 97.82050000000001   97.83449999999999   91.16862020296143   0.0005572768080819476   95.32346677471595   0.0003936082115872622   68.07306512447788   ... 0.0 0.0 0.0 0.0 0.0 8.660254e-01    -0.500000   0.974928    1.205367e-01    5.000000e-01

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

EDIT2: не важно, я только что обнаружил hdf5 и, очевидно, в отличие от csv, он сохраняет структуру даже с multiIndex без дополнительной работы, поэтому я буду использовать pd.to_hdf ().

1 Ответ

0 голосов
/ 21 января 2019

Я думаю, что если вы используете - pd.to_csv ("/", index = True), он сохранил его с индексом, а затем считал обратно как обычно.

...