J'ai une dataframe avec environ 9k lignes et 57 cols, c'est 'df'.pandas dataframe créer une nouvelle dataframe en dupliquant n fois les lignes de la frameframe précédente et changer la date
Je dois avoir une nouvelle base de données: 'df_final' - pour chaque ligne de 'df' je dois répliquer chaque ligne 'x' fois et augmenter le jour dans chaque rangée un par un, aussi 'x' fois . Alors que je peux le faire pour quelques itérations, quand je le fais pour toute la longueur de 'df' 'len (df)' la boucle prend tellement de temps (> 3 heures) que je devais l'annuler. Je n'ai jamais vu la fin de celui-ci. Voici le code actuel:
df.shape
output: (9454, 57)
df_int = df[0:0]
df_final = df_int[0:0]
range_df = len(df)
for x in range(0,2):
df_int = df.iloc[0+x:x+1]
if abs(df_int.iat[-1,3]) > 0:
df_int = pd.concat([df_int]*abs(df_int.iat[-1,3]), ignore_index=True)
for i in range(1, abs(df_int.iat[-1,3])):
df_int['Consumption Date'][i] = df_int['Consumption Date'][i-1] + datetime.timedelta(days = 1)
i += 1
df_final = df_final.append(df_int, ignore_index=True)
x += 1
Le résultat des boucles pour les deux premières lignes de 'df' est ci-dessous.
Y at-il une autre façon de se rendre à la sortie désirée. Il semble que les pandas ne se débrouillent pas très bien avec les boucles. Dans VBA excel, la même boucle prend environ 3/4 minutes ... J'essaie de changer un processus qui est actuellement en excel en python, cependant, s'il n'y a aucun moyen de faire fonctionner ce système, je suppose que je m'en tiendrai aux vieilles méthodes. ..
sol – Dark
vraiment gentil merci beaucoup! cela va comme un gant! :) – dapaz