Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #3451
| From | Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> |
|---|---|
| Newsgroups | fr.comp.lang.python |
| Subject | Re: pandas switch-on switch-off |
| Date | 2021-04-06 22:00 +0200 |
| Organization | Université de Strasbourg |
| Message-ID | <87zgyb89q4.fsf@universite-de-strasbourg.fr.invalid> (permalink) |
| References | (1 earlier) <6066e50d$0$32516$426a74cc@news.free.fr> <s46rfk$kkb$1@dont-email.me> <60672e97$0$21601$426a74cc@news.free.fr> <606c055d$0$12681$426a74cc@news.free.fr> <606c8f5e$0$3700$426a74cc@news.free.fr> |
Damien Wyart <damien.wyart@free.fr> writes: > * Nicolas <nicolasp@aaton.com> in fr.comp.lang.python: >> Que se passera t-il si 2 (ou plus) jeux de données sont à traiter ? > > C'est vrai que j'aurais pu souligner que cette solution est "quick & > dirty" ; vu le contexte qui semblait plus être un "toy example" qu'autre > chose, cela m'avait semblé intéressant de montrer qu'on pouvait éviter > la boucle "pour le fun". [...] Note que le boucle est cachée dans apply... A tout hasard, en Python cru (ou presque), ça s'écrirait : | import functools | | df = [[0, 0], [0, 0], [1, 0], [0, 0], [0, 1], [0, 0], [0, 0], [0, 1], | [0, 0], [1, 0], [0, 0], [1, 0], [0, 0], [0, 1], [0, 1], [0, 0], | [0, 0], [1, 0], [1, 1], [0, 0]] | | def res (acc, c): | return False if c[1] else c[0] or acc | | r = functools.reduce (res, df) J'imagine que pandas doit fournir un truc similaire (ça s'appelle fold_left ou reduce traditionnellement, mais comme pandas semble appeler "apply" quelque chose qui s'appelle "map" en général, je m'abstiens de deviner ; il y a de bonnes raisons pour l'usage d'autres noms, cela dit). Si tu veux vraiment conserver tous les résultats intermédiaires, c'est un peu plus sport : | def reslist (accl, c): | lst, state = accl | r = res (state, c) | return (lst + [c + [r]],r) | | rl = functools.reduce (reslist, df, ([],False)) | print (rl[0]) C'est succinct mais ce n'est pas efficace à cause des listes de Python (c'est fait pour des listes fonctionnelles, càd chaînées, pas pour des "vecteurs" comme les listes standard). L'appel de reduce construit une nouvelle liste. Si tu cherches la performance, il vaut mieux écrire la boucle explicitement, et utiliser append() ou modifier les éléments au passage (comme dans ta première solution). -- Alain.
Back to fr.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
pandas switch-on switch-off carboleum <c4rboleum-NOSPAM@gmail.com> - 2021-04-02 11:19 +0200
Re: pandas switch-on switch-off Damien Wyart <damien.wyart@free.fr> - 2021-04-02 11:34 +0200
Re: pandas switch-on switch-off carboleum <c4rboleum-NOSPAM@gmail.com> - 2021-04-02 12:25 +0200
Re: pandas switch-on switch-off Damien Wyart <damien.wyart@free.fr> - 2021-04-02 16:47 +0200
Re: pandas switch-on switch-off carboleum <c4rboleum-NOSPAM@gmail.com> - 2021-04-02 18:29 +0200
Re: pandas switch-on switch-off Nicolas <nicolasp@aaton.com> - 2021-04-06 08:53 +0200
Re: pandas switch-on switch-off Damien Wyart <damien.wyart@free.fr> - 2021-04-06 18:42 +0200
Re: pandas switch-on switch-off Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-04-06 22:00 +0200
Re: pandas switch-on switch-off Nicolas <nicolasp@aaton.com> - 2021-04-07 08:50 +0200
Re: pandas switch-on switch-off carboleum <c4rboleum-NOSPAM@gmail.com> - 2021-07-09 15:52 +0200
Re: pandas switch-on switch-off Damien Wyart <damien.wyart@free.fr> - 2021-07-15 11:23 +0200
Re: pandas switch-on switch-off Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-07-15 13:20 +0200
Re: pandas switch-on switch-off Carboléüm <c4rboleumNOSPAM@gmail.com> - 2021-07-16 10:13 +0200
Re: pandas switch-on switch-off Carboleum <c4rboleum**NOSPAM**@gmail.com.invalid> - 2022-04-03 14:51 +0200
Re: pandas switch-on switch-off Damien Wyart <damien.wyart@free.fr> - 2022-04-12 07:34 +0200
csiph-web