2016-07-15 2 views
1

my old post과 관련된 새로운 질문이 있습니다. 그 게시물에서 문제는 단순화되었고, 비교할 2 개의 w 만있었습니다. 이제 주파수가 (1,1,0) 인 2 이상, 예를 들어 3이 있다고 가정합니다. 이 목록을 확인하고 싶습니다. 최대 값이 인 경우 을 두 번 표시하고 0을 쓰고 그렇지 않으면 최대 값의 열 레이블을 쓰십시오. 그 게시물의 첫 번째 답변을 적용하려했지만 막혔습니다.팬더 : 목록 값 비교 및 ​​새 열 쓰기

도움을 주시면 감사하겠습니다. 관심을 가져 주셔서 감사합니다. :-)

편집 :

내 진짜 DF의 예는이 경우

|FID |geometry|GridCode|catarro|constipado|gripa|gripe|resfriado|resfrio 0 |9592|... |9592 |1 |0 |0 |3 | 3 | 1

는 원하는 출력 될 것이다 : |FID |geometry|GridCode|catarro|constipado|gripa|gripe|resfriado|resfrio| max 0 |9592|... |9592 |1 |0 |0 |3 | 3 | 1 | 0

+0

0-1 열입니까? – ayhan

+0

예, 지난 6 개 열을 처리하고 싶습니다. –

답변

3

편집 :

# You should drop all extra fields 
# don't worry they are still present in original dataframe (df) 
words = df.drop(['FID'], axis=1) 

# Get maximums for each row 
maxes = words.max(axis=1) 

# Create new column with the features names with maximum values 
df['max'] = words.idxmax(axis=1) 

# Create a mask with non-accepted rows 
mask = (
    words.values.ravel() == maxes.values.repeat(len(words.columns)).ravel() 
).reshape(-1,len(words.columns)).astype(int).sum(axis=1)>1 

# Wipe 'max' column in non-accepted rows 
df.ix[mask,'max'] = 0 
+0

나를 위해 작동하지 않습니다. 'df.filter (regex = r'w \ d ')'를 my df에 적용하면 빈 열의 df가 반환되고 indices 열만이 반환됩니다. 실제로 나는 내 문제를 발견했습니다. w는 'w', w2, w3이 아닙니다.이 코드를 적용하려고합니다. –

+0

당신이 당신에 대해 더 많이 말하면 나는 당신을 도울 수 있다고 확신합니다. 예를 들어 단어 주파수로 작업하는 경우 기계 학습에 사용되는 일부 변압기를 사용할 수 있습니다 (http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html, http : /scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html#sklearn.feature_extraction.text.TfidfVectorizer) – frist

+0

나는 첫 번째 게시물을 업데이트했으며, 지연을 유감스럽게 생각합니다. 나는 새로운 사람이다. –