2016-07-15 6 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 ')'を私のdfに適用すると、空のdfが返され、indicesカラムだけが返されます。 実際に私は自分の問題を見つけました、wはw1、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

私は最初の投稿を更新しました。遅れて申し訳ありません。私は新しいです。 –

関連する問題