2017-12-26 13 views
1

これは数字と文字列を含む私のデータです。一致する文字列が得られません

df2 = pd.DataFrame({'A': ['1,008$','4,000$','6,000$','10,00$','8,00$','45€','45€']}) 
df2 = pd.DataFrame(df2, columns = ['A']) 
vv=df2[df2['A'].str.match('$')] 

このような出力が必要です。

0 1,008$ 
1 4,000$ 
2 6,000$ 
3 10,00$ 
4 8,00$ 

が、私はこの出力を取得しています:

Out[144]: 
Empty DataFrame 
Columns: [A] 
Index: [] 

誰も私を助けてくださいことができますか?

答えて

2

numpyののdefchararrayモジュールを使用して、やや冗長な方法。
私はいつもこれにいくつか注意したいと思います。

# Using @cᴏʟᴅsᴘᴇᴇᴅ's suggestion 
# Same function as below but shorter namespace path 

df2[np.char.find(df2.A.values.astype(str), '$') >= 0] 

旧回答

from numpy.core.defchararray import find 

df2[find(df2.A.values.astype(str), '$') >= 0] 

     A 
0 1,008$ 
1 4,000$ 
2 6,000$ 
3 10,00$ 
4 8,00$ 
+1

私は、この(あなたの記事を見て)前に数回使用しました、と 'np.char.find'私はそう思う。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ確かに... thx( - : – piRSquared

2

str.matchが最初から一致し始めます。ただし、$パターンは最後にのみ検出されます。

この修正を適用するには、パターンを変更するか、機能を変更する必要があります。修正パターン(そう\$が最後に一致している)との

オプション1
str.match - あなたが一致しているかについて具体的にしたい場合は、あなただけの数字に一致させることができ

df2[df2.A.str.match('.*\$$')] 

     A 
0 1,008$ 
1 4,000$ 
2 6,000$ 
3 10,00$ 
4 8,00$ 

とコンマ - これは、彼らがいる限り、彼らはトンを持っているように一致している(あなたの列内の無効なエントリを考慮していないことを

df2[df2.A.str.match('[\d,]+\$$')] 

     A 
0 1,008$ 
1 4,000$ 
2 6,000$ 
3 10,00$ 
4 8,00$ 

注意ホース文字は文字列のどこかにあり、終了は$です)。


オプション2
str.contains

df2[df2.A.str.contains('\$$')] 

     A 
0 1,008$ 
1 4,000$ 
2 6,000$ 
3 10,00$ 
4 8,00$ 
+0

それが働いた、ありがとう –

関連する問題