Je suis en train d'être pythonique avec mon code, mais ne peut pas comprendre comment faire:Comment puis-je passer une expression comme mot-clé de fonction en Python
dfSort.assign(i+5=pd.Series(dfWork))
où dfSort est un dataframe et pd est pandas géants importer. Bien sûr, le i+5
est une expression et ne peut donc pas être passé en tant que nom de colonne. Mais je veux assigner dynamiquement un nom de colonne dans le code (appelé i+5
). La seule façon de le faire est par ailleurs (cela peut se lourd):
if (i+5)== 5:
dfSort = dfSort.assign(a=pd.Series(dfWork, index=dfSort.index.values))
elif (i+5)==6:
dfSort = dfSort.assign(b=pd.Series(dfWork, index=dfSort.index.values))
elif (i+5)==7:
dfSort = dfSort.assign(c=pd.Series(dfWork, index=dfSort.index.values))
elif (i+5)==8:
dfSort = dfSort.assign(d=pd.Series(dfWork, index=dfSort.index.values))
Est-il possible de le faire comme le premier bloc de code sans les instructions if?
Cela ne fonctionne pas:
Colname = {5: 'a',6 : 'b', 7 : 'c', 8 : 'd'}
dfSort = dfSort.assign(Colname[i+5]=pd.Series(dfWork))
Bonjour, merci. J'avais essayé ceci 'dfSort = dfSort.assign (** Colname [i + 4] = pd.Series (dfWork))' Il s'avère que j'avais besoin d'ajouter {} et d'utiliser le Colon. – DrizztVD
@DrizztVD Oui. Vous auriez besoin de décompresser un dictionnaire. C'est la solution générale et cela fonctionnera. Si cela vous aide, veuillez considérer [marquer cette réponse acceptée] (https://stackoverflow.com/help/someone-answers). Merci! –
@DrizztVD Je ne sais pas. Je pensais que vous aviez eu une erreur. J'ai mal lu votre commentaire. Ma faute. –