Предположит, у меня есть следующий DataFrame:Перепрофилирование Панда DataFrame с Повторным индексом столбца
>>> cols = ['model', 'parameter', 'condition', 'value']
>>> df = pd.DataFrame([['BMW', '0-60', 'rain', '7'], ['BMW', '0-60', 'sun', '7'],
['BMW','mpg', 'rain','25'],
['BMW', 'stars', 'rain','5'],
['Toyota', '0-60', 'rain','9'],
['Toyota','mpg', 'rain','40'],
['Toyota', 'stars', 'rain','4']], columns=cols)
>>> df
model parameter condition value
0 BMW 0-60 rain 7
1 BMW 0-60 sun 7
2 BMW mpg rain 25
3 BMW stars rain 5
4 Toyota 0-60 rain 9
5 Toyota mpg rain 40
6 Toyota stars rain 4
Это список показателей эффективности для различных автомобилей в различных условиях. Разумеется, это составленный набор данных, но его представитель моей проблемы.
В конечном итоге я хочу иметь наблюдение за данным условием в его собственной строке и каждой метрике в ее собственной колонке. Это будет выглядеть примерно так:
parameter condition 0-60 mpg stars
model
0 BMW rain 7 25 5
1 BMW sun 7 NaN NaN
2 Toyota rain 9 40 4
Обратите внимание, что я только что составил формат выше. Я не знаю, создаст ли Панда нечто подобное, но это общая идея. Я бы также, конечно, преобразовал «условие» в булевский массив и заполнил NaNs.
Моя проблема в том, что когда я пытаюсь использовать сводный метод, я получаю сообщение об ошибке. Я думаю, что это потому, что мой «колонковый» ключ повторяется (потому что у меня есть статистика BMW 0-60 для дождя и для условий солнца).
df.pivot(index='model',columns='parameter')
ValueError: Index contains duplicate entries, cannot reshape
Кто-нибудь знает о скользком способе сделать это? Я нахожу, что многие из этих методов реставрации Pandas являются довольно тупыми.
оба ответа верны. другой связанный с этим вопрос http://stackoverflow.com/questions/17333644/pandas-dataframe-transforming-frame-using-unique-values-of-a-column – goofd