2017-10-12 47 views
0
colums

我DF看起來是這樣的:大熊貓命名通配符

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

現在我想重新命名這樣的列:#

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

%是一個通配符。 但它當然不會像這樣工作。

列名的開頭在日誌數據中始終相同,但是結尾在時間上發生變化。

回答

0

您可以通過dict使用replace,通配符使用.*和串^開始:

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

樣品:

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

這不是我想要的。 – kolja

1

您可以過濾列和取名字:

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

你可以準備一個重命名你列功能:

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 

,然後使用.rename()方法與函數作爲參數:

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