Ответ 1
Прекрасно работает для меня? Можете ли вы опубликовать точный метод вызова, который вы используете?
In [4]: df.pivot('name', 'id', 'x')
Out[4]:
id 1 2
name
john 0 0
mike 1 0
В Pandas документации по методу pivot
мы имеем:
Examples
--------
>>> df
foo bar baz
0 one A 1.
1 one B 2.
2 one C 3.
3 two A 4.
4 two B 5.
5 two C 6.
>>> df.pivot('foo', 'bar', 'baz')
A B C
one 1 2 3
two 4 5 6
My DataFrame
структурирован следующим образом:
name id x
----------------------
0 john 1 0
1 john 2 0
2 mike 1 1
3 mike 2 0
И я хочу что-то вроде этого:
1 2 # (this is the id as columns)
----------------------
mike 0 0 # (and this is the 'x' as values)
john 1 0
Но когда я запускаю метод pivot
, он говорит:
*** ReshapeError: Index contains duplicate entries, cannot reshape
Это не имеет смысла, даже в примере повторяются записи в столбце foo
. Я использую столбец name
как индекс поворота, первый аргумент вызова метода pivot
.
Прекрасно работает для меня? Можете ли вы опубликовать точный метод вызова, который вы используете?
In [4]: df.pivot('name', 'id', 'x')
Out[4]:
id 1 2
name
john 0 0
mike 1 0
Насколько я могу сказать с обновлениями pandas, вы должны использовать pivot_table() вместо pivot().
pandas.pivot_table(df,values='count',index='site_id',columns='week')
Попробуйте это,
df.drop_duplicates(['foo','bar'])
df.pivot('foo','bar','baz')
UPD: для исправления работы пары "поворот" (id_user, информация) не должны иметь dublicates
Работает:
df2 = pd.DataFrame({'id_user':[1,2,3,4,4,5,5],
'information':['phon','phon','phone','phone1','phone','phone1','phone'],
'value': [1, '01.01.00', '01.02.00', 2, '01.03.00', 3, '01.04.00']})
df2.pivot(index='id_user', columns='information', values='value')
он не работает:
df2 = pd.DataFrame({'id_user':[1,2,3,4,4,5,5],
'information':['phone','phone','phone','phone','phone','phone','phone'],
'value': [1, '01.01.00', '01.02.00', 2, '01.03.00', 3, '01.04.00']})
df2.pivot(index='id_user', columns='information', values='value')