J'ai le dataframe suivant.
hour sensor_id hourly_count
0 1 101 651
1 1 102 19
2 2 101 423
3 2 102 12
4 3 101 356
5 4 101 79
6 4 102 21
7 5 101 129
8 6 101 561
Notez que pour sensor_id 102, il n'y a pas de valeurs pour hour = 3. Cela est dû au fait que les capteurs ne génèrent pas une ligne séparée de données si le hourly_count est égal à zéro. Cela signifie que le capteur 102 devrait avoir hourly_counts = 0 à hour = 3, mais c'est juste la façon dont les données d'origine ont été collectées.
Je souhaiterais idéalement un code qui comble cette lacune. Il faut donc comprendre que s'il y a 2 capteurs, chaque capteur doit avoir un enregistrement horaire, et sinon, insérer une ligne dans la trame de données pour ce capteur pour cette heure et remplir la colonne hourly_count à cette ligne comme 0.
hour sensor_id hourly_count
0 1 101 651
1 1 102 19
2 2 101 423
3 2 102 12
4 3 101 356
5 3 102 0
6 4 101 79
7 4 102 21
8 5 101 129
9 5 102 0
10 6 101 561
11 6 102 0
Toute aide est vraiment appréciée.
En utilisant DataFrame.reindex
, vous pouvez définir explicitement votre index. Ceci est utile s'il vous manque des données des deux capteurs pendant une heure donnée. Vous pouvez également prolonger l'heure au-delà de ce que vous avez. Dans l'exemple suivant, il s'étend jusqu'à l'heure 8.
new_ix = pd.MultiIndex.from_product([range(1,9), [101, 102]], names=['hour', 'sensor_id'])
df_new = df.set_index(['hour', 'sensor_id'])
df_new.reindex(new_ix, fill_value=0).reset_index()
Production:
hour sensor_id hourly_count
0 1 101 651
1 1 102 19
2 2 101 423
3 2 102 12
4 3 101 356
5 3 102 0
6 4 101 79
7 4 102 21
8 5 101 129
9 5 102 0
10 6 101 561
11 6 102 0
12 7 101 0
13 7 102 0
14 8 101 0
15 8 102 0
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras