2017-07-17 6 views
0

私はパンダのデータフレームの列を持っている:パンダは数字の文字列を検索し、最後に文字を返しますか?

string_col 
541511N~541512N~541513N 
332710Y~332999Y 
Null 
238210Y~423690Y~517911Y~517919Y~532490Y~561421Y~811213Y 

私は特定の数を検索し、端にあるチャーを取得しようとしています。

たとえば、最初の行の541513541513Nです。最後にNを取得しようとしています。だから、結果は次のようになり

string_col 541513_answer 
541511N~541512N~541513N N 
332710Y~332999Y NaN 
Null Nan 
238210Y~423690Y~517911Y~517919Y~532490Y~561421Y~811213Y Nan 

EDIT: 'A6' の

検索をし、次の返却

だから、私はその情報を持つ新しい列を作成したいです8文字

string_col2  
A620240328  
A620180614  
Null   
xx  

string_col2 x 
A620240328 20240328 
A620180614 20180614 
Null   NaN 
xx   NaN 

答えて

1

IIUC:

In [35]: df['541513_answer'] = df.string_col.str.extract(r'541513(\w+)', expand=True) 

In [36]: df 
Out[36]: 
              string_col 541513_answer 
0       541511N~541512N~541513N    N 
1         332710Y~332999Y   NaN 
2            Null   NaN 
3 238210Y~423690Y~517911Y~517919Y~532490Y~561421...   NaN 

UPDATE:

In [6]: df 
Out[6]: 
    string_col2 
0 A620240328 
1 A620180614 
2  Null 
3   xx 

In [9]: df['x'] = df['string_col2'].str.extract(r'A6(.{8})', expand=False) 

In [10]: df 
Out[10]: 
    string_col2   x 
0 A620240328 20240328 
1 A620180614 20180614 
2  Null  NaN 
3   xx  NaN 
+0

グレート、また、どのように私は、サブストリングの後に8文字を抽出することを拡大するでしょうか?例えば。 'A620240328'私は' A6'を検索し、 '20240328'を返そうとします – spitfiredd

+0

@spitfiredd、対応する小さな入力と希望のデータセットを投稿してください。 – MaxU

+0

okが第2のパターンを追加しました – spitfiredd

1
>>> df['54513_answer'] = df['string_col'].apply(lambda x: x[-1] if len(x)>6 and x[-7:-1]=='541513' else 'Null') 
>>> df 
              string_col 54513_answer 
0       541511N~541512N~541513N   N 
1         332710Y~332999Y   Null 
2            Null   Null 
3 238210Y~423690Y~517911Y~517919Y~532490Y~561421...   Null 
関連する問題