2017-10-19 15 views
0

Je veux faire un pivot_table mais dans certains cas, je dois ajouter les marges, donc mon code ressemblepandas géants python ajouter des arguments pour fonctionner

if ytd: 
    datak = direct.pivot_table(index='Code', columns='Period', 
           values=agg, aggfunc=sum, 
           margins=True, 
           margins_name='Year to date') 
else: 
    datak = direct.pivot_table(index='Code', columns='Period', 
           values=agg, aggfunc=sum) 

donc ce que je veux vraiment faire est de commencer avec quelque chose comme

exp = (indice = 'code', colonnes = 'Période', les valeurs = agg, aggfunc = somme)

marg = (marges = True, margins_name = 'année à ce jour)

et enfin

Datak = direct.pivot_table (exp + marg) si YTD autre direct.pivot_table (exp)

Répondre

1

Essayez ceci:

datak = direct.pivot_table(index='Code', columns='Period', 
          values=agg, aggfunc=sum, 
          margins=True if ytd else False, 
          margins_name='Year to date' if ytd else 'All') 
1

peut-être avec eval:

exp = 'direct.pivot_table(index=\'Code\', columns=\'Period\', values=agg, aggfunc=sum' 

marg = 'margins=True, margins_name=\'Year to date\')' 

datak = eval(exp + ', ' + marg) if ytd is not None else eval(exp + ')')