Je suis nouveau dans ce domaine ! Faire mon premier projet Python. :)
Mes tâches sont :

  1. convertir df['Start Time'] de la chaîne en datetime
  2. créer une colonne de mois à partir de df['Start Time']
  3. obtenir le mode de ce mois.

J'ai utilisé plusieurs manières différentes pour effectuer les 3 étapes, mais essayer d'obtenir le mode renvoie toujours TypeError : les indices de tuple doivent être des entiers ou des tranches, pas str. Cela se produit même si j'essaie de convertir le "tuple" en une liste ou un tableau NumPy.

Façons dont j'ai essayé d'extraire le mois de l'heure de début :

df['extracted_month'] = pd.DatetimeIndex(df['Start Time']).month
df['extracted_month'] = np.asarray(df['extracted_month'])
df['extracted_month'] = df['Start Time'].dt.month

Façons que j'ai essayé d'obtenir le mode:

print(df['extracted_month'].mode())
print(df['extracted_month'].mode()[0])
print(stat.mode(df['extracted_month']))

Essayer d'obtenir l'index avec df.columns.get_loc("extracted_month") puis le remplacer dans le code de mode me donne la MÊME erreur (TypeError : les indices de tuple doivent être des entiers ou des tranches, pas str).

Je pense que je devrais convertir df['extracted_month'] en un autre... quelque chose. Qu'est-ce que c'est?

Remarque : ma colonne extract_month est une STRING, mais vous devriez toujours pouvoir obtenir le mode à partir d'une variable de chaîne ! Je ne le change pas, ce serait abandonner.

Edit: l'utilisation du code suivant entraîne toujours la même erreur

extracted_month = pd.Index(df['extracted_month'])
print(extracted_month.value_counts())
-1
Betule Sairafi 6 nov. 2020 à 18:43

1 réponse

Meilleure réponse

L'erreur est probablement causée par la façon dont vous créez votre cadre de données. Si le cadre de données est créé dans une autre fonction et que cette fonction renvoie d'autres éléments avec le cadre de données, mais que vous l'affectez à la variable df, alors df sera un tuple contenant le cadre de données réel, et non le cadre de données lui-même.

0
Yaqeen Al Mahdi 7 nov. 2020 à 20:51