2017-03-19 1 views
2

두 개의 문자열 열로 구성된 팬더 DataFrame이 있습니다. 두 열의 편집 거리가 포함 된 세 번째 열을 만들고 싶습니다. 이 그것이 꽤 많은 시간 동안 응답하지 유지하고 내가 수동으로 종료해야한다는 의미에서 무한 루프의 일종에 갈 것 몇 가지 이유를 들어두 팬더 열 사이의 거리 편집

from nltk.metrics import edit_distance  
df['edit'] = edit_distance(df['column1'], df['column2']) 

.

모든 의견을 환영합니다.

+0

http://pandas.pydata.org/pandas-docs/stable/generated /pandas.DataFrame.apply.html – alvas

답변

6

nltk의 edit_distance 함수는 문자열 쌍을 비교하는 데 사용됩니다. 당신은 각기 다르게 각 행의 문자열로 문자열의 해당 쌍 사이의 편집 거리, apply를 계산하려면 :

results = df.apply(lambda x: edit_distance(x["column1"], x["column2"]), axis=1) 

또는 같은 (아마도 더 효율적 조금)의 관련성이없는 열을 포함하지 않도록

dataframe :

results = df.loc[:, ["column1", "column2"]].apply(lambda x: edit_distance(*x), axis=1) 

이 dataframe에 결과를 추가하려면, 당신은이처럼 사용하십시오 :

df["distance"] = df.loc[:, ["column1","column2"]].apply(lambda x: edit_distance(*x), axis=1) 
+0

이 작업은 가능하지만 DataFrame에 2 개 이상의 열이 있다고 가정합니다. 이 코드가 실패 할 정도로 편집 거리가 두 개 밖에 없다는 것에 신경을 쓴다. 0과 1 이외의 다른 값을 '축'에 줄 수 있습니까? 즉, 열 번호를 지정할 수 있습니까? –

+1

글쎄, 당신은 "** 두 개의 ** 문자열로 구성된 데이터 프레임"이라고했습니다 :-) 내 대답을 편집했습니다. 'axis' 인자는 반복의 방향 (열 또는 행)에 관한 것이므로 여기에서 조정할 필요가 없습니다. – alexis

+0

완전히 내 잘못이야! 신속하고 완벽한 답변을 보내 주셔서 감사합니다. (- : –