2017-01-20 6 views
4

私はSeries.str.zfill(width)メソッドのカスタマイズ版を探しています。このメソッドは、ストリングにwidth文字を持つようにゼロを追加します。私は、これを行う何かを探していますが、文字(または文字のシーケンス)は0だけではありません。たとえば、左から必要な回数 ' - 'を追加すると、文字列にはwidth文字が入ります。パンダのSeries内の特殊文字列フォーマット

答えて

3

は、私はあなたが引数としてwidthfillcharを取るSeries.str.rjustを探していると思う:

が追加 文字でシリーズ/インデックス内の文字列の左側を埋めます。

1

left_fillのようなカスタム関数を定義し、pandas.Series.applyを使用して完全なシリーズにマッピングできます。コメントで述べたように

import pandas as pd 

s = pd.Series(['foo', 'bar', 'baz', 'apple']) 

def left_fill(string, char, length): 
    while len(string) < length: 
     string = char + string 
    return string 

s.apply(left_fill, args = ('-', 5)) 

しかし、あなたはあなた自身を作成する対ビルトインrjust方法pandasを使用したほうが良いです!私のほうはもう一つの、パフォーマンスの低い例です。

+0

ベクトル化されたメソッドが存在する場合は、実際には 'apply'答えを返すべきではありません。 – EdChum

+0

これは別のやり方です。私はフードの下で少し見て、これをここに残すことに何の害も見ない。 – blacksite

+0

小さなデータセットに対しては、もっと速くなるでしょうが、既存のメソッドの方がスケーラビリティに優れていることがありますが、リスト内包は時にはもっと速くて、パンダユーザにとっては他のオプションがない場合には本当に 'apply'を使うべきです。かなり珍しい。このようなユーザコードがたくさんあることを知っているので、ベクトル化されたメソッドIMOを探すのではなく、 'apply'を使って問題を自動的に解決すると考えると、ユーザを混乱させる可能性があります。これを見る – EdChum