J'ai un Dataframe comme ça. J'ai besoin de convertir la chaîne de Colume utilisée du temps à partir de la chaîne vers T = df['Used time'].str.split(expand=True)
H = pd.to_numeric(T[0].str.replace('Hour',''))
M = round(pd.to_numeric(T[1].str.replace('Minute',''))/60, 1)
df['Used time'] = H + M
4 Réponses :
Vous pouvez ajouter 0hour code> au début s'il manque une heure manquante.
Qu'en est-il de l'utilisation de Regex pour trouver les chiffres code> hour code> S et Minute code> s chiffres, convertir toutes les minutes et somme code>? import re
T = df['Used time']
h = re.findall("(\d+)Hour", T)
m = re.findall("(\d+)Minute", T)
df['Used time'] = ((int(h[0])*60 if h else 0) + (int(m[0]) if m else 0)) # in minutes
Essayez d'utiliser RPartition () Code> au lieu de Split. T = df['Used time'].str.rpartition('Hour')
H = pd.to_numeric(T[0]).fillna(0)
M = (pd.to_numeric(T[2].str.strip('Minute'))/60).round(1)
df['Used time'] = H + M
print(df)
Date User Used time Used
0 31-07-19 Member (GTV1) 1.0 5083
1 31-07-19 Member (NHOKON) 0.1 333
2 31-07-19 Member (GA) 0.7 3500
3 31-07-19 Member (VIET125) 2.5 12667
4 31-07-19 Member (LUAN123) 0.7 3333
5 31-07-19 Member (MMINH) 2.8 13917
6 31-07-19 Member (MMINH) 0.0 0
7 31-07-19 Member (MMINH) 2.2 10917
8 31-07-19 Member (MMINH) 0.9 4417
9 30-07-19 Member (KHANH00) 0.7 3417
10 30-07-19 Member (CHIEN2) 1.7 8333
11 30-07-19 Member (CHIEN2) 0.2 750
12 30-07-19 Guest 0.0 2000
13 30-07-19 Member (DUYTQ111) 1.0 5250
14 29-07-19 Member (TRUNGTQ2) 0.7 3500
15 29-07-19 Guest 1.2 7000
16 29-07-19 Member (MMINH) 2.2 11250
Vous pouvez utiliser un motif de regex pour extraire les deux sortie: p> heure code> et minute code>: df['Used time'] = new_df['Hour']*60 + new_df['Minute']
Avant d'exécuter votre code, vous pouvez vérifier si la ligne contient
heure code>, sinon vous pouvez ajouter0hour code>