J'ai déjà posé ma question mais elle n'était pas assez précise dans sa description. Les gens intelligents dans ce forum ont déjà proposé des solutions, mais j'ai oublié (désolé) de préciser que s'il y avait des zéros dans les colonnes pertinentes, ils devraient être conservés.Comment (avec apply) pour sélectionner et copier des colonnes spécifiques dans une Dataframe selon l'index ou une autre colonne
Bonjour J'ai un dataframe comme ci-dessous
2014 2015 2016 2017 2018 2019
2014 10 20 30 40 0 5
2015 0 0 200 0 100 0
2016 0 0 200 140 35 10
2017 0 0 0 20 0 12
je dois avoir un résultat comme celui-ci:
yearStart yearStart+1 yearStart+2 yearStart+3 yearStart+4
0 10 20 30 40 0
1 0 200 0 100 0
2 200 140 35 10 0
3 20 0 12 0 0
L'idée est de sélectionner dans chaque ligne, les colonnes entre deux dates:
index et l'index + delta, avec un delta un paramètre (dans cet exemple 4) pour les mettre dans une trame de données.
Avec iterrows(), cela prend trop de temps.
J'ai essayé avec
df1 = df.apply(lambda x: pd.Series(x[x.keys()>=x.index],1)).fillna(0).astype(int)
mais il ne fonctionne pas:
TypeError: ('Index(...) must be called with a collection of some kind,
1 was passed', 'occurred at index 2014')
Merci
double possible de [ dataframe panda: comment copier certaines colonnes dans d'autres en fonction d'une valeur dans la ligne] (https://stackoverflow.com/questions/46283564/panda-dataframe-how-to-copy-some-columns-in-others-according-to-a-value-in-the – GPhilo
Vous devez éditer votre première question en précisant vos besoins, ne pas ouvrir une nouvelle question essentiellement identique à la première. – GPhilo
désolé mais je suis un débutant dans ce forum. Je m'excuse pour ma maladresse. En tout cas merci. Le fait que certains zéros doivent être conservés m'a donné des raisons de penser que c'était un cas différent. – phil