2014-03-28 7 views
2

한 열의 문자열에서 다른 열에서 발생하는 단어를 제거하는 절차는 무엇입니까?다른 열에 나타나는 단어를 제거하십시오. Pandas

예를 들면 :

Sr  A    B       C 
1  jack  jack and jill     and jill 
2  run   you should run,    you should , 
3  fly   you shouldnt fly,there  you shouldnt ,there 

내가 그것은의 B 마이너스 내용이되도록, column C를 원하는 것을 알 수있다. 제 3의 예에서, fly 다음에 쉼표가 붙어 있으므로, 구두점을 고려해야합니다 (코드가 주위의 공백을 감지하는쪽으로 더 많은 경우).
Column A도 2 단어가 될 수 있으므로 삭제해야합니다.

df.apply(lambda x: x["C"].replace(r"\b"+x["A"]+r"\b", "").strip(), axis=1) 
+0

열 A에 항상 한 단어가 포함됩니까? 단어가 더 많은 경우 정확한 문자열을 2 열의 일치 항목으로 찾아야합니까? 아니면 문자열의 무작위 순열 일 수 있습니까? –

+0

정확히 일치하는 경우 2 단어가 있습니다. A에서 "fly there"는 B에서 "fly fly"와 일치해야하며이를 제거해야합니다 .. –

답변

3

이 시도 :

x['C'] = x['B'].replace(to_replace=r'\b'+x['A']+r'\b', value='',regex=True) 

그것은 previous answer를 기반으로 한 someone는 팬더에 정확하게 작업을 수행하는 방법을 나에게 말했다 곳. 현재 상황에 맞게 조금 변경했습니다.

+0

감사합니다. –

3

어떻게이 모양 않습니다
나는 같은 것을 팬더의 표현을해야합니까?

In [24]: df 
Out[24]: 
    Sr  A      B 
0 1 jack   jack and jill 
1 2 run   you should run, 
2 3 fly you shouldnt fly,there 

[3 rows x 3 columns] 

In [25]: df.apply(lambda row: row.B.strip(row.A), axis=1) 
Out[25]: 
0     and jill 
1   you should run, 
2 ou shouldnt fly,there 
dtype: object 
+0

이 방법이 적합합니까? - ?? df [ 'C'] = 귀하의 표현식 ?? –

+0

이 표현식이 "알파벳 대 알파벳"기준으로 평가되는 것처럼 보입니다. "lynch"라고 말하면 "fly"와 비교하면 lynch에서 "ly"가 제거됩니다. 나는 그것을 원하지 않습니다. 어쩌면 단어 경계 정렬이 도움이 될 수 있습니다 .. –

+0

그래, 너는 필요할거야. 아마 정규식을 사용합니다. 구두점을 정확하게 잡으려고. 나중에 다시 보도록하겠습니다. – TomAugspurger

관련 문제