2017-10-12 11 views
0

Mon df ressemble à ceci:Pandas avec caractères génériques renomment colums

Datum Zeit Temperatur[°C]  Luftdruck Windgeschwindigkeit[m/s] Windrichtung[Grad] Relative Luftfeuchtigkeit[%] Globalstrahlung[W/m²] 

Maintenant, je veux renommer les colonnes comme ceci: #

wetterdaten.rename(columns={'Temperatur%': 'Temperatur', 'Luftdruck[hPa]': 'Luftdruck'}, inplace=True) 

% est un caractère générique. Mais bien sûr, ça ne marchera pas comme ça.

Le début du nom de colonne est toujours le même dans les données de journal, mais la fin change temporairement.

Répondre

0

Vous pouvez utiliser replace par dict, pour une utilisation générique .* et début de la chaîne ^:

d = {'^Temperatur.*': 'Temperatur', 'Luftdruck[hPa]': 'Luftdruck'} 
df.columns = df.columns.to_series().replace(d, regex=True) 

Exemple:

cols = ['Datum', 'Zeit', 'Temperatur[°C]', 'Luftdruck' , 'Windgeschwindigkeit[m/s]', 
     'Windrichtung[Grad]', 'Relative Luftfeuchtigkeit[%]', ' Globalstrahlung[W/m²]'] 

df = pd.DataFrame(columns=cols) 
print (df) 
Empty DataFrame 
Columns: [Datum, Zeit, Temperatur[°C], Luftdruck, Windgeschwindigkeit[m/s], 
      Windrichtung[Grad], Relative Luftfeuchtigkeit[%], Globalstrahlung[W/m²]] 
Index: [] 

d = {'^Temperatur.*': 'Temperatur', 'Luftdruck.*': 'Luftdruck'} 
df.columns = df.columns.to_series().replace(d, regex=True) 
print (df) 

Empty DataFrame 
Columns: [Datum, Zeit, Temperatur, Luftdruck, Windgeschwindigkeit[m/s], 
      Windrichtung[Grad], Relative Luftfeuchtigkeit[%], Globalstrahlung[W/m²]] 
Index: [] 
+0

Ce n'est pas ce que je veux. – kolja

1

Vous pouvez filtrer les colonnes et chercher le nom:

wetterdaten.rename(columns={wetterdaten.filter(regex='Temperatur.*').columns[0]: 'Temperatur', 'wetterdaten.filter(regex='Luftdruck.*').columns[0]': 'Luftdruck'}, inplace=True) 
0

Vous pouvez préparer un fonction pour vous renommer des colonnes:

rename_columns(old_name): 
    if old_name == 'Temperatur': 
     new_name = old_name + whichever_you_wants # may be another function call 
    elif old_name == 'Luftdruck': 
     new_name = 'Luftdruck[hPa]' 
    else: 
     new_name = old_name 
    return new_name 

puis utilisez la méthode .rename() avec cette fonction comme paramètre:

wetterdaten.rename(columns=rename_columns, inplace=True)