J'essaie de diviser la colonne nommée "variable" en deux autres colonnes "Type" et "Paramètre"

  BatchNumber PhaseNumber SiteID   variable  Values
0  4552694035       0020B      2  min_tempC    27.0
1  4552694035     OverAll      2  max_tempF    24.0

J'ai essayé d'utiliser le code ci-dessous

weatherData = weatherData['variable'].str.split('_', 1)

Mais pas le résultat escompté. Le résultat attendu est le suivant.

  BatchNumber PhaseNumber SiteID   variable  Values     Type    Parameter
0  4552694035       0020B      2  min_tempC    27.0     min     tempC
1  4552694035     OverAll      2  max_tempF    24.0     max     tempF

Tout corps sait .. comment l'obtenir?

2
Tarun Khaneja 11 avril 2018 à 16:47

3 réponses

Meilleure réponse

Utilisez DataFrame.pop pour l'extrait colonne avec split et paramètre expand=True pour DataFrame:

weatherData[['Type','Parameter']]=weatherData.pop('variable').str.split('_', 1, expand=True)
print (weatherData)
   BatchNumber PhaseNumber  SiteID  Values Type Parameter
0   4552694035       0020B       2    27.0  min     tempC
1   4552694035     OverAll       2    24.0  max     tempF

Si vous souhaitez également supprimer la colonne d'origine pop:

weatherData[['Type','Parameter']] = weatherData['variable'].str.split('_', 1, expand=True)
print (weatherData)
   BatchNumber PhaseNumber  SiteID   variable  Values Type Parameter
0   4552694035       0020B       2  min_tempC    27.0  min     tempC
1   4552694035     OverAll       2  max_tempF    24.0  max     tempF
2
jezrael 11 avril 2018 à 13:52

Utilisation des assign, zip et dict déballage

df.assign(**dict(zip(('Type', 'Parameter'), zip(*df.variable.str.split('_')))))

   BatchNumber PhaseNumber  SiteID   variable  Values Type Parameter
0   4552694035       0020B       2  min_tempC    27.0  min     tempC
1   4552694035     OverAll       2  max_tempF    24.0  max     tempF
0
piRSquared 11 avril 2018 à 14:02

Cela est possible via pd.Series.str.split:

df['Type'], df['Parameter'] = df['variable'].str.split('_')

#    BatchNumber PhaseNumber  SiteID   variable  Values   Type Parameter
# 0   4552694035       0020B       2  min_tempC    27.0    min       max
# 1   4552694035     OverAll       2  max_tempF    24.0  tempC     tempF
0
jpp 11 avril 2018 à 13:49