大熊猫命名通配符

大熊猫命名通配符

问题描述:

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) 

%是一个通配符。 但它当然不会像这样工作。

列名的开头在日志数据中始终相同,但是结尾在时间上发生变化。

您可以通过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

您可以过滤列和取名字:

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

你可以准备一个重命名你列功能:

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)