0
votes

Ajout à une ligne de Dataframe par ligne, en utilisant une boucle pour boucle et si la déclaration

J'ai du mal à trouver un moyen itérale à travers un fichier de données et utilisez une instruction IF pour déterminer si une journée est un jour de la semaine ou de week-end (et reproduit, en utilisant le paquet vacances pour trouver des vacances)

Test Data
for i in df.date:
    if i.weekday() < 5:
        df['period2'] = ('wkdy')
    else:
        df['period2'] = ('wknd')


0 commentaires

3 Réponses :


0
votes

J'essaierais d'utiliser la fonction local code> et d'appliquer les fonctions à des colonnes entières à une fois, l'opération est vectorisée et beaucoup plus rapide à exécuter:

df['week'] = df['date'].weekday()
df['week'].loc[df['week'] < 5] = 'wkday'
df['week'].loc[df['week'] >= 5] = 'wknd'


2 commentaires

Les choix binaires devraient crier mentalement np.where () dans 99% des cas (et je sauve que 1% pour des cas, je ne sais pas, mais éventuellement exister). Cette approche prend 2 exécutions aux données.


@ROGANJOSH Je suis d'accord, j'ai oublié celui-ci pour une seconde.



2
votes

Vous pouvez utiliser np.where code> xxx pré>

si vous voulez vraiment utiliser A pour une boucle, vous devez faire boucle sur les rangées en faisant P>

for i in range(df.shape[0]):
    ....


1 commentaires

Travaillé merveilleusement après avoir ajouté une colonne de la journée comptez avec python pour i dans la plage (len (df.date)): DF [«semaine»] [i] = (DF [DATE '] [I]). En semaine () Merci!



0
votes

Vous pouvez utiliser appliquer . Il renvoie une série ou un dataframe , xxx

Il y a une autre fonction peut le faire, comme df.map < / code>, df.aggreagte , car aggace si basique de appliquer .


0 commentaires