2017-10-12 8 views
0

とcolumsの名前を変更:#パンダは私のDFは、このようになりますワイルドカード

%がワイルドカードである
wetterdaten.rename(columns={'Temperatur%': 'Temperatur', 'Luftdruck[hPa]': 'Luftdruck'}, inplace=True) 

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

今、私はこのような列の名前を変更したいです。 もちろん、このようには動作しません。

ログデータのカラム名の先頭は常に ですが、終了は一時的に変化しています。ワイルドカードは.*を使用してのために

答えて

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) 
関連する問題