2017-11-16 15 views
1

私は最近、パンダシリーズのstrメソッドについて知りました。しかし、私が操作を連鎖したい場合(例えば、とstrip)、すべての操作の後でstrを呼び出して、最も洗練されたコードではないようにしておく必要があります。パンダシリーズの文字列操作

たとえば、私のカラム名にスペースとピリオドが含まれているとし、それらをアンダースコアで置き換えたいとします。残ったアンダースコアも取り除きたいかもしれません。

df.columns.str.replace(' ', '_').str.replace('.', '_').str.strip('_')

ありがとう:私はstrメソッドを使用して、これをやってみたかった場合は、実行することを回避のいずれかの方法があります!

+0

regexの使用に反対ですか? – pault

答えて

1

.str機能ごとに必要なのはstrだと思いますが、それはデザインごとです。


しかし、ここで使用の可能性が唯一のreplaceです:

df = pd.DataFrame(columns=['aa dd', 'dd.d_', 'd._']) 

print (df) 
Empty DataFrame 
Columns: [aa dd, dd.d_, d._] 
Index: [] 

print (df.columns.str.replace('[\s+.]', '_').str.strip('_')) 
Index(['aa_dd', 'dd_d', 'd'], dtype='object') 
1

リストの内包表記を使用しないのはなぜ?リストコンプで

import re 
df.columns = [re.sub('[\s.]', '_', x).strip('_') for x in df.columns] 

、あなたは.strたびにコールする必要がなく、直接文字列オブジェクトで作業しています。

+0

ありがとう、そうです、リスト内包表記は私たちに同じ答えを与えることができますが、str操作を連鎖できるかどうか不思議でした。 – tomasn4a

+0

@ tomasn4aあなたはすでにその答えを知っていました; –

+0

そうですが、私は、すべての操作の後に 'str'を入力しなくても、' str'を利用しているかどうかを知りたかったのです。 – tomasn4a