Изменение значений столбца в заголовках столбцов в pandas

У меня есть следующий код, который принимает значения в одном столбце блока данных pandas и делает их столбцами нового фрейма данных. Значения в первом столбце блока данных становятся индексом нового кадра данных.

В некотором смысле, я хочу превратить список смежности в матрицу смежности. Вот код:

import pandas as pa print "Original Data Frame" # Create a dataframe oldcols = {'col1':['a','a','b','b'], 'col2':['c','d','c','d'], 'col3':[1,2,3,4]} a = pa.DataFrame(oldcols) print a # The columns of the new data frame will be the values in col2 of the original newcols = list(set(oldcols['col2'])) rows = list(set(oldcols['col1'])) # Create the new data matrix data = np.zeros((len(rows), len(newcols))) # Iterate over each row and fill in the new matrix for row in zip(a['col1'], a['col2'], a['col3']): rowindex = rows.index(row[0]) colindex = newcols.index(row[1]) data[rowindex][colindex] = row[2] newf = pa.DataFrame(data) newf.columns = newcols newf.index = rows print "New data frame" print newf 

Это работает для этого конкретного примера:

 Original Data Frame col1 col2 col3 0 ac 1 1 ad 2 2 bc 3 3 bd 4 New data frame cd a 1 2 b 3 4 

Он будет терпеть неудачу, если значения в col3 не являются числами. Мой вопрос в том, есть ли более элегантный / надежный способ сделать это?

One Solution collect form web for “Изменение значений столбца в заголовках столбцов в pandas”

Это похоже на работу для опоры :

 import pandas as pd oldcols = {'col1':['a','a','b','b'], 'col2':['c','d','c','d'], 'col3':[1,2,3,4]} a = pd.DataFrame(oldcols) newf = a.pivot(index='col1', columns='col2') print(newf) 

доходность

  col3 col2 cd col1 a 1 2 b 3 4 

Если вам не нужен столбец MultiIndex, вы можете удалить col3 используя:

 newf.columns = newf.columns.droplevel(0) 

которые затем

 col2 cd col1 a 1 2 b 3 4 
  • Как изменить dtype одного столбца в DataFrame?
  • Почему pandas xs не падает, даже если drop_level = True
  • Изменение имен нескольких столбцов, но не всех из них - Panda Python
  • GIL для ограниченного потока IO в расширении C (HDF5)
  • pandas iloc vs ix vs loc объясняет?
  • Панды: выбор нескольких столбцов из одной строки
  • Разница в различиях в Python + Pandas
  • Подавление научной нотации в пандах?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.