J'ai ci-dessous Dataframe appelé "DF" et calculer le dernier montant de la somme de l'ID unique appelé
import pandas as pd
from dateutil import parser
from datetime import datetime, timedelta
df= {'Date':['2019-01-11 10:23:45','2019-01-09 10:23:45', '2019-01-11 10:27:45',
'2019-01-11 10:25:45', '2019-01-11 10:30:45', '2019-01-11 10:35:45',
'2019-02-09 10:25:45'],
'Fruit id':['100','200','300','100','100', '100','200'],
'X':[200,400,330,100,300,200,500],
}
df= pd.DataFrame(df)
df["Date"] = pd.to_datetime(df['Date'])
4 Réponses :
pivot_table code> pourrait être utile ici. df.sort_values(by='Date', inplace=True)
newdf = pd.pivot_table(df, columns='Fruit id', index='Date', aggfunc=np.sum, values='Amount').rolling('30min', closed='left').sum().sort_index()
newdf['Fruit id'] = df['Fruit id'].values
df['count_ncc_amt'] = newdf.apply(lambda row: row[row['Fruit id']], axis=1).values
print(df)
Date Fruit id NCC Amount Sys count_ncc_amt
1 2019-01-09 10:23:45 200 100 400 0 NaN
0 2019-01-11 10:23:45 100 100 200 1 NaN
3 2019-01-11 10:25:45 100 100 100 0 200.0
2 2019-01-11 10:27:45 300 200 330 1 NaN
4 2019-01-11 10:30:45 100 100 300 1 300.0
5 2019-01-11 10:35:45 100 100 200 0 600.0
6 2019-02-09 10:25:45 200 100 500 1 NaN
Pouvons-nous créer les sorties similaires comme les miennes après cela?
Avez-vous eu le travail? Je pense que Maddy a besoin de frutid et de la CCC dans les colonnes du pivot. Et puis vous pouvez simplement newdf = newdf.stack (). Stack (). Réinitialiser_index () code>. Je ne suis pas chez mon bureau, essayez ceci sans Newdf ['ID de fruit'] = ... code> et la ligne suivante
@Richiev désolé mais ce que vous avez suggéré de ne pas travailler ou que je pourrais mal compromis quelque chose.
@Siamak Safari Peut-on ajouter des secondes au lieu de minutes dans le code?
@ MADDY6 Oui Vous pouvez utiliser différentes fréquences, regarder dans Pandas .pydata.org / Pandas-Docs / Stable / user_Guide / ... Pour plus d'options.
Merci! .. Comment ajouter ce filtre DF ['SYS'] == 1? .... J'ai utilisé ce filtre dans mon code.
@ Maddy6 vous voulez dire df [df ['sys'] == 1] code>? C'est une indexation booléenne.
La partie qui saute est que vous filtrant tout le DF une fois pour chaque rangée, et je suppose que vous obtenez une petite fraction de lignes pour chaque fois.
Je vais essayer d'écrire le code complet plus tard. Mais vous pouvez essayer de le réparer avec des pointeurs: p>
Essayons avec groupeby: ou avec fusion croisée: p> sortie: p>
Comment ajouter df ['sys'] == 1 filtre dans le code? .. je le fais dans mon code
Si vous voulez seulement la fenêtre de 30 minutes la plus récente (non le jeu de données complète avec un million de lignes), vous pouvez utiliser Maintenant calcule maintenant Statistiques récapitulatives sur pd.timédielta () code>: df_recent code> p> p>
Quel est le nombre d'identifiant de fruit unique code> S?
C'est juste une clé pour identifier les fruits vendus à temps en particulier. (100 se réfère aux fruits de la mangue, 200 se réfèrent aux fruits de la banane, etc.)
Quelle est la taille de votre ensemble de données? Une fusion de soi serait suffisante.
Environ 5 millions de lignes ... Comment faire une approche de moi-même? ... Pouvez-vous m'aider..Je nouveau à Python.