Преобразовать столбец в строку заголовка - PullRequest
0 голосов
/ 29 августа 2018

Итак, у меня есть этот файл данных / CSV-файл:

,stock,adj_close
0,GERN,3.59
1,GERN,3.3
2,GERN,3.34
...
4530,CMCSA,35.78
4531,CMCSA,35.46
4532,CMCSA,35.08
...
9060,AAPL,189.63
9061,AAPL,189.25
9062,AAPL,190.31

С большим количеством акций и точек данных. На акцию одинаковое количество строк, и каждая строка - это день. Чего я хотел бы добиться, так это того, чтобы строка заголовка состояла из всех названий акций, а строки под ним были бы значением в adj_close. Таким образом, результат будет выглядеть так:

,  GERN, CMCSA, AAPL, ............
0, 3.59, 35.78, 189.63 .. .. .. ..
1, 3.3,  35.46, 189.25 .. .. .. ..
2, 3.34, 35.08, 190.31 .. .. .. ..

Возможно ли это?

Я изучил метод pivot и некоторые циклы, но не смог заставить его работать.

1 Ответ

0 голосов
/ 29 августа 2018

Используйте set_index и unstack

In [37]: (df.set_index(['stock', df.groupby('stock').cumcount()])['adj_close']
            .unstack('stock'))
Out[37]:
stock    AAPL  CMCSA  GERN
0      189.63  35.78  3.59
1      189.25  35.46  3.30
2      190.31  35.08  3.34

Или используйте pivot

In [47]: df.assign(cc=df.groupby('stock').cumcount()
           ).pivot(columns='stock', values='adj_close' , index='cc')
Out[47]:
stock    AAPL  CMCSA  GERN
cc
0      189.63  35.78  3.59
1      189.25  35.46  3.30
2      190.31  35.08  3.34

Подробнее

In [38]: df
Out[38]:
      stock  adj_close
0      GERN       3.59
1      GERN       3.30
2      GERN       3.34
4530  CMCSA      35.78
4531  CMCSA      35.46
4532  CMCSA      35.08
9060   AAPL     189.63
9061   AAPL     189.25
9062   AAPL     190.31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...