2017-06-30 5 views
-2

列名の途中に1語を追加する方法。 例:接尾辞のようにではなく、最後に列名の名前を一度に変更

値_1 _2 VALUE_3

所望の出力: value_session_1 value_session_2 value_session_3

+2

' df.columns = df.columns.str.replaceをmentionned同じように? – Zero

答えて

1

formatで使用map、また、文字列の前または後の可能なアドオンがあります:

df.columns = df.columns.map(lambda x: '{0[0]}_session_{0[1]}'.format(x.split('_'))) 

それともstr.replacecomment of John Galtから解決策:

df.columns = df.columns.str.replace('_', '_session_') 

サンプル:

df = pd.DataFrame(columns=['value_1','value_2','value_3']) 
print (df) 
Empty DataFrame 
Columns: [value_1, value_2, value_3] 
Index: [] 

df.columns = df.columns.map(lambda x: '{0[0]}_session_{0[1]}'.format(x.split('_'))) 
print (df) 
Empty DataFrame 
Columns: [value_session_1, value_session_2, value_session_3] 
Index: [] 

df.columns = df.columns.str.replace('_', '_session_') 
print (df) 
Columns: [value_session_1, value_session_2, value_session_3] 
Index: [] 

EDIT:

df = pd.DataFrame(columns=['va_lue_1','va_lue_2','va_lue_3']) 
print (df) 
Empty DataFrame 
Columns: [va_lue_1, va_lue_2, va_lue_3] 
Index: [] 

df.columns = df.columns.map(lambda x: '{0[0]}_session_{0[1]}'.format(x.rsplit('_', 1))) 
print (df) 
Empty DataFrame 
Columns: [va_lue_session_1, va_lue_session_2, va_lue_session_3] 
Index: [] 
+0

ありがとうございますが、列名に複数の '_'がある場合はどうなりますか?最後のものを選択するには?実際には、2つの '_'が現れました.2つ以上になりましたので、どのようにセカンド '_'を選択してください。 – jovicbg

+0

最長の答えはおそらく最良の答えではありません。 – staticor

+0

'rsplit'を使用し、最後にcheclを編集します。 – jezrael

2

replacingは十分に簡単で、動作するはずです:助け

df.columns = df.columns.str.replace('_','_session') 

希望。ハッピーコーディング。

EDIT: @jezraelは `( '_ _SESSION' '_'、)

関連する問題