J'essaie d'utiliser un masque pour faire une sélection de mon objet groupby, mais j'obtiens une erreur que je ne peux pas résoudre.Pandas: utiliser un timeseries comme masque de sélection
premier groupe I par groupId
df_grouped = df.groupby('groupid')
Je calcule la STD, min et max de chaque groupe à utiliser dans mes masques de sélection. Ensuite, je crée deux masques sur des paramètres différents. Puis, je crée deux masques sur différents paramètres.
s1 = df_grouped_std['distance']<0.05
s2 = (df_grouped_max.speed- df_grouped_min.speed) < 10
Enfin, je combine les masques.
sTot = s1&s2
Cela donne l'erreur/stacktrace suivante:
Traceback (most recent call last):
File "<ipython-input-198-b0df7aa8bb76>", line 1, in <module>
selection = df_grouped[sTot.values]
File "C:\Anaconda\lib\site-packages\pandas\core\groupby.py", line 3155, in __getitem__
% str(bad_keys)[1:-1])
KeyError: 'Columns not found: False, True'
Ensuite, je voudrais utiliser le masque pour sélectionner.
selection = df_grouped[sTot]
Je vois que s1, s2 et Stot sont des séries chronologiques et peut-être c'est pourquoi je ne peux pas les utiliser pour sélectionner, mais je ne peux pas comprendre pourquoi ce serait. Qu'est-ce que j'oublie ici?
Exemple de données:
print(s1.head())
print(s2.head())
print(sTot.head())
groupid
941 True
942 True
1721 True
1722 True
2201 True
Name: distance, dtype: bool
groupid
941 True
942 True
1721 False
1722 True
2201 False
Name: speed, dtype: bool
groupid
941 True
942 True
1721 False
1722 True
2201 False
dtype: bool
pouvez-vous sortir la tête de s1 et s2? Faites 'print (s1.head())' et 'print (s2.head())' et copiez et collez la sortie ici –