2016-07-03 13 views
1

カラムの名前/ヘッダをpandasデータフレームの文字列に戻す方法はありますか?私は、同じプレフィックスを持つ一連のデータを扱いたいと思っています。Python/Pandas dataframe - カラム名を返す

col_00 | col_01 | ... | col_51 | bc_00 | cd_00 | cd_01 | ... | cd_90 

Iが個別の行に、のみcol_00からcol_51およびcd_00からcd_90に関数を適用したい:データフレームのヘッダは、次のようになります。これを行うために、私はリストに列名を集めると思った。 to_work_withは接頭辞 'col'で始まる列のリストで、df[to_work_with]に関数を適用します。それから私はto_work_withを変更し、 'cd'プレフィックスなどで始まる列のリストを含むでしょう。しかし、私は列名を反復する方法を知らない。

だから基本的に、私が探しているものは、この機能である:

to_work_with = column names in the df that start with "thisstring" 

私はそれをどのように行うことができますか?ありがとうございました!

+2

をしたいですか。 columns.values if col.startswith( "thisstring")] ''? – mhoff

答えて

2

あなたはstr.startswithboolean indexingを使用することができます。

cols = df.columns[df.columns.str.startswith('cd')] 
print (cols) 
Index(['cd_00', 'cd_01', 'cd_02', 'cd_90'], dtype='object') 

をサンプル:list comprehension

print (df) 
    col_00 col_01 col_02 col_51 bc_00 cd_00 cd_01 cd_02 cd_90 
0  1  2  3  4  5  6  7  8  9 

cols = df.columns[df.columns.str.startswith('cd')] 
print (cols) 
Index(['cd_00', 'cd_01', 'cd_02', 'cd_90'], dtype='object') 

#if want apply some function for filtered columns only 
def f(x): 
    return x + 1 

df[cols] = df[cols].apply(f)  
print (df) 
    col_00 col_01 col_02 col_51 bc_00 cd_00 cd_01 cd_02 cd_90 
0  1  2  3  4  5  7  8  9  10 

別の解決策:あなたは[ `` DFでCOLためCOLを

cols = [col for col in df.columns if col.startswith("cd")] 
print (cols) 
['cd_00', 'cd_01', 'cd_02', 'cd_90'] 
+0

すごい!ありがとうございました! :) –

+0

私は4分で受け入れます;) –

+0

うれしいことができますよ!がんばろう! – jezrael

関連する問題