2015-08-10 5 views
0

Я пытаюсь создать сводную таблицу, используя pd.pivot_table.Pandas Pivot Tables- Неожиданное ключевое слово 'cols'

df1=df.pivot('Partner','Year','Value') 

не работает никакой проблемы и создает таблицу

Year      2011  2012  2013  2014 
Partner                
Albania     0.000693 0.000663  NaN  NaN 
Areas, nes    0.002310 0.014177 0.492017 0.633261 
Armenia      NaN 0.000145  NaN  NaN 
Belgium     0.390415 0.400312 0.493444 0.643490 
Brazil     0.000231 0.000362 0.000518 0.000234 
China      0.024488 0.000443 0.000085 0.000052 
Colombia     0.425991 0.447333 0.488582 0.538809 

Однако создание my_pivot;

def my_pivot(rows, values, aggfunc, plt=True): 
    dfp = df 
    piv = pivot_table(dfp, values=values, rows=rows, cols=cols,  aggfunc=aggfunc) 
    print piv 
    if plt: 
     plot(piv) 
     show() 


my_pivot(values = df['Value'], rows=df['Partner'], cols=df['Year'], aggfunc=np.sum,plt=True) 

производит ошибки;

TypeError: my_pivot() got an unexpected keyword argument 'cols' 

Я понятия не имею, почему это не сработает, есть ли у кого-нибудь предложения?

Заранее спасибо

+3

Ваша функция 'my_pivot' не имеет«перевалы»аргумент - вам нужно добавить его. Кроме того, ключевым словом arg for 'pivot_table' должно быть« столбцы », а не« cols »(см. Подпись вызова в [docs] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas. pivot_table.html)). –

+0

вам нужно добавить 'cols' в вашу функцию my_pivot – ammy

ответ

8

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.pivot_table.html

Проверить эту документацию функции панды сводной таблицы. Нет параметров с именем cols. Раньше там были «cols» в старой версии Pandas. Теперь «rows» заменяется на «index» и «cols» на «столбцы».

Попробуйте это:

def my_pivot(rows, values, aggfunc, plt=True): 
    dfp = df 
    piv = pivot_table(dfp, values=values, index=rows, columns=cols,  aggfunc=aggfunc) 
    print piv 
    if plt: 
     plot(piv) 
     show() 

my_pivot(values = df['Value'], rows=df['Partner'], cols=df['Year'], aggfunc=np.sum,plt=True) 
Смежные вопросы