2017-12-26 35 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('$')] 

이렇게 출력하고 싶습니다.

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

이 사람이 나를 도와주세요 수 있습니다

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

하지만 난이 출력 무엇입니까?

답변

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$ 

열의 유효하지 않은 항목을 고려하지 않음을 유의하십시오 (t 호스 문자열은 어딘가에 있으며 $으로 끝납니다.


옵션 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

는 일, 감사 –