Pandas DataFrame разделяющие столбцы - PullRequest
0 голосов
/ 02 апреля 2019

У меня большой DataFrame, в котором есть только один столбец со всеми значениями. Мне нужно разделить данные на несколько столбцов. После долгих проб и ошибок я сдался и обратился к вам за помощью.

заголовок DataFrame выглядит следующим образом: строки являются объектом серии. не значения

                                                        column1
    ---------------------------------------------------------------------
    MultiIndex1  | 1.00   2.00   3.00   4.00   5.00   6.00   7.00
                 | 1.00   2.00   3.00   4.00   5.00   6.00   7.00
                 | 1.00   2.00   3.00   4.00   5.00   6.00   7.00
                 | 1.00   2.00   3.00   4.00   5.00   6.00   7.00
                 | 1.00   2.00   3.00   4.00   5.00   6.00   7.00
                 | 1.00   2.00   3.00   4.00   5.00   6.00   7.00

мой желаемый результат должен выглядеть следующим образом:

                 column1|column2|column3|column4|column5|column6|column7
    ---------------------------------------------------------------------
    MultiIndex1  | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
                 | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
                 | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
                 | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
                 | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00
                 | 1.00 |  2.00 |  3.00 |  4.00 |  5.00 |  6.00 |  7.00

я пытался: df.columns = ['col1', 'col2', 'col3', 'col4', 'col5' ...]

Я пытался превратить его в серию и обратно в ДФ.

попытался применить функции .str.split.

много нарезки и конкат, но безуспешно.

помощь будет высоко ценится. Спасибо!

вот несколько первых строк моего набора данных, например:

дата и AALR3 - мультииндекс строки

2019-01-02; AALR3; 0000000020; 000000000013,300000; 000000000000000100; 10: 00: 04,961; 1; 2019-01-02; 000086597137782; 000000000310091; 2; 2019-01-02; 000086597142909; 000000000310092; 1; 0; 00000072; 00000174 2019-01-02; AALR3; 0000000010; 000000000013,310000; 000000000000003000; 10: 00: 04,961; 1; 2019-01-02; 000086597135827; 000000000310088; 2; 2019-01-02; 000086597142909; 000000000310089; 1; 0; 00000120; 00000174 2019-01-02; AALR3; 0000000050; 000000000013,390000; 000000000000000200; 10: 11: 40,214; 1; 2019-01-02; 000086597182855; 000000000400273; 1; 2019-01-02; 000086597151579; 000000000400274; 2; 0; 00000058; 00000008 2019-01-02; AALR3; 0000000040; 000000000013,380000; 000000000000000100; 10: 11: 40,214; 1; 2019-01-02; 000086597182855; 000000000400271; 1; 2019-01-02; 000086597151578; 000000000400272; 2; 0; 00000058; 00000174 2019-01-02; AALR3; 0000000030; +000000000013,380000; 000000000000000100; 10: 11: 40,214; 1; 2019-01-02; 000086597182855; 000000000400269; 1; 2019-01-02; 000086597151189; 000000000400270; 2; 0; 00000058; 00000308 * +1023 *

я читаю это с:

    pd.read_csv('//path_to_file', sep=';')

Я хочу назвать столбцы так.

    df.columns = ['Session Date','Instrument Symbol','Trade Number','Trade Price','Traded Quantity',
          'Trade Time','Trade Indicator','Buy Order Date','Sequential Buy Order Number',
          'Secondary Order ID - Buy Order','Aggressor Buy Order Indicator','Sell Order Date',
         'Sequential Sell Order Number','Secondary Order ID - Sell Order','Aggressor Sell Order Indicator',
          'Cross Trade Indicator','Buy Member','Sell Member']

UPDATE:

решения были эффективными, большое спасибо.

Я почти так, как я хочу. Есть ли способ сделать дубликаты индексов MultiIndex? Мне удалось сделать даты, но не символ. Спасибо

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

То, что вы видите, это MultiIndex Dataframe, а то, что вы ищете SingleIndex dataframe, Попробуйте

df = df.reset_index()
df.columns = ['col1','col2','col3','col4','col5','col6','col7']
0 голосов
/ 02 апреля 2019

Попробуйте с этим-

your_df = pd.DataFrame(df.column1.str.split(' ',1).tolist(), columns = ['col1','col2','col3','col4','col5','col6','col7'])
print(your_df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...