0
votes

Créer une colonne Pandas en fonction des valeurs d'index

Je suis sûr que cela a été demandé avant, mais je ne trouve pas la bonne façon de faire cela. J'ai un fichier de données avec un index DateTime xxx

Ce que je voudrais faire est d'accéder (et de créer une nouvelle colonne de) la propriété du mois de l'index DateTime. J'ai essayé de simplement accéder à la propriété à l'aide d'un imprimé (df ["test"]. DateTime.month) Mais je reçois le KeyError attendu (je sais que le titre du Dataframe est "Test" et non L'index lui-même, je ne sais tout simplement pas quoi faire).

Toute aide est grandement appréciée, et merci d'avance.


3 commentaires

Vous pouvez accéder à l'index sous forme de colonne après avoir appelé df.reeset_index () ou l'index directement avec df.index


df.index.month ou df.reeset_index () ['"test']. DT.Month .


Merci les deux, je ne savais pas que je pourrais le faire de cette façon! @Quanghoang La première solution est ce que je cherche comme je voudrais le garder comme l'index


3 Réponses :


1
votes

Comme ça?

df['month_s'] = [str(mnth).zfill(2) for mnth in pd.to_datetime(df.index).month]
df

Out[3]:


           col2 month   month_s
04-05-2018  56     4    04
04-06-2018  23     4    04
11-07-2018  87     4    04
04-08-2018  11     4    04


1 commentaires

Fondamentalement oui! J'essayais juste de garder le premier zéro pour le mois - est-ce possible?



1
votes

J'espère que c'est ce que vous recherchez:

import pandas as pd

data  = [['04-05-2018',56] ,
         ['04-06-2018',23],
         ['04-07-2018',87],
         ['04-08-2018',11]]

df = pd.DataFrame(data, columns =['test', 'col2'])

df.set_index('test', inplace=True)

df['MONTH'] = pd.to_datetime(df.index).month

df


           col2 Month
test        
04-05-2018  56  4
04-06-2018  23  4
04-07-2018  87  4
04-08-2018  11  4


0 commentaires

1
votes
import pandas as pd

data  = [['04-05-2018',56] ,
         ['04-06-2018',23],
         ['04-07-2018',87],
         ['04-08-2018',11]]

df = pd.DataFrame(data, columns =['test', 'col2'])
df.set_index('test', inplace=True)
df

            col2
test            
04-05-2018    56
04-06-2018    23
04-07-2018    87
04-08-2018    11

df=dfT.reset_index()
df['Months'] = list(dfT['test'].astype(str).str[3:5])
df

            col2 Months
test                   
04-05-2018    56     05
04-06-2018    23     06
04-07-2018    87     07
04-08-2018    11     08

Done ✅✅

0 commentaires