2016-10-26 23 views
5

tham khảo: Pandas DataFrame: remove unwanted parts from strings in a columnLàm thế nào để trích xuất hai nhân vật đầu tiên từ chuỗi sử dụng regex

Trong tham chiếu đến một câu trả lời được cung cấp trong liên kết ở trên. Tôi đã nghiên cứu một số biểu thức chính quy và tôi dự định lặn sâu hơn nhưng trong thời gian đó tôi có thể sử dụng một số trợ giúp.

dataframe của tôi là một cái gì đó như:

df:

c_contofficeID 
0   0109 
1   0109 
2   3434 
3   123434 
4   1255N9 
5   0109 
6   123434 
7   55N9 
8   5599 
9   0109 

psuedo Mã

Nếu hai ký tự đầu tiên là 12 loại bỏ chúng. Hoặc cách khác, thêm 12 vào các ký tự không có 12 trong hai ký tự đầu tiên.

Kết quả sẽ như thế nào:

c_contofficeID 
0   0109 
1   0109 
2   3434 
3   3434 
4   55N9 
5   0109 
6   3434 
7   55N9 
8   5599 
9   0109 

Tôi đang sử dụng các câu trả lời từ các liên kết ở trên như là một điểm khởi đầu:

df['contofficeID'].replace(regex=True,inplace=True,to_replace=r'\D',value=r'') 

Tôi đã thử những điều sau đây:

Nỗ lực 1)

df['contofficeID'].replace(regex=True,inplace=True,to_replace=r'[1][2]',value=r'') 

Cố gắng 2)

df['contofficeID'].replace(regex=True,inplace=True,to_replace=r'$[1][2]',value=r'') 

Nỗ lực 3)

df['contofficeID'].replace(regex=True,inplace=True,to_replace=r'?[1]?[2]',value=r'') 
+0

'^ 12' là regex cho "bắt đầu với '12'" –

+1

gì nếu bạn có "1234" ? Nên "12" được giữ lại trong trường hợp đó hoặc bị loại bỏ? –

Trả lời

2

câu trả lời mới
mỗi bình luận từ @Addison

# '12(?=.{4}$)' makes sure we have a 12 followed by exactly 4 something elses 
df.c_contofficeID.str.replace('^12(?=.{4}$)', '') 

Nếu ID của phải có bốn nhân vật, đó là đơn giản hơn đến

df.c_contofficeID.str[-4:] 

câu trả lời cũ
sử dụng str.replace

df.c_contofficeID.str.replace('^12', '').to_frame() 

enter image description here

+1

Điều này rất nguy hiểm vì nó sẽ không hoạt động với '1234'. Vui lòng sử dụng một cái gì đó như '^ 12 (? =. {4} $)' – Addison

Các vấn đề liên quan