2017-01-31 13 views
1

pandasデータフレームのDFから文字列を抽出しようとしていますが、ソース文字列は一致するリストにあります。私はdf.str.extract(list1)を使用してみましたが、私は私が私がDFにリストを比較する方法は、私のリストはリストと比較したデータフレームからの文字列の抽出

以下のようなものです

From

Col 1 Col 2 
1  The date 
2  Three has come 
3  Mail Sent 
4  Done Deal 

To

Col 1 Col 2   Col 3 
1  The date  NaN 
2  Three has come Three has 
3  Mail Sent  Mail 
4  Done Deal  Done 

正しくないと推測する非ハッシュの種類のエラーを得ましたあなたはListextractjoinとすべての値を使用することができます

List1 = ['Three has' , 'Mail' , 'Done' , 'Game' , 'Time has come'] 

答えて

1

|によってregexorを意味するもの:

List1 = ['Three has' , 'Mail' , 'Done' , 'Game' , 'Time has come'] 
df['Col 3'] = df['Col 2'].str.extract("(" + "|".join(List1) +")", expand=False) 
print (df) 
    Col 1   Col 2  Col 3 
0  1  The date  NaN 
1  2 Three has come Three has 
2  3  Mail Sent  Mail 
3  4  Done Deal  Done 

別の解決策:

List1 = ['Three has' , 'Mail' , 'Done' , 'Game' , 'Time has come'] 

df['Col 3'] = df['Col 2'].apply(lambda x: ''.join([L for L in List1 if L in x])) 
df['Col 3'] = df['Col 3'].mask(df['Col 3'] == '') 
print (df) 
    Col 1   Col 2  Col 3 
0  1  The date  NaN 
1  2 Three has come Three has 
2  3  Mail Sent  Mail 
3  4  Done Deal  Done 
+0

はこれを試みたが、エラー 'ValueErrorを得た:3を通過したアイテムの数が間違っを、配置が –

+0

問題がサンプルであるか '1'を意味実際のデータがありますか? – jezrael

+0

実際のデータに問題があります。 - または_のようないくつかのセルや特別な文字でnosを持つことは違いを生むでしょうか? –

関連する問題