私はパンダを使ってcsvファイルに簡単な投票スコアを実装しようとしています。基本的に `dataframe ['C'] ==アクティブでdataframe ['Count'] == 0の場合、dataframe ['Combo'] == 0. dataframe ['C'] ==アクティブとデータフレーム[ Count '] == 1; dataframe ['C'] ==アクティブでデータフレーム['Count'] == 2; dataframe ['Combo'] == 2などとなります。パンダで重複した値を無視する
これは私のデータフレームである:
A B C Count Combo
Ptn1 Lig1 Inactive 0
Ptn1 Lig1 Inactive 1
Ptn1 Lig1 Active 2 2
Ptn2 Lig2 Active 0 0
Ptn2 Lig2 Inactive 1
Ptn3 Lig3 Active 0 0
Ptn3 Lig3 Inactive 1
Ptn3 Lig3 Inactive 2
Ptn3 Lig3 Inactive 3
Ptn3 Lig3 Active 4 3
これは、明確にするために、これまでに私のコードです:
import pandas as pd
df = pd.read_csv('affinity.csv')
VOTE = 0
df['Combo'] = ''
df.loc[(df['Classification] == 'Active') & (df['Count'] == 0), 'Combo'] = VOTE
df.loc[(df['Classification] == 'Active') & (df['Count'] == 1), 'Combo'] = VOTE + 1
df.loc[(df['Classification] == 'Active') & (df['Count'] == 2), 'Combo'] = VOTE + 2
df.loc[(df['Classification] == 'Active') & (df['Count'] > 3), 'Combo'] = VOTE + 3
私のコードは、これを正しく行うことができました。ただし、Ptn3-Lig3のペアには2つの「アクティブ」値があります。2番目の値を無視する(つまり、最小のデータフレーム['Count']値のみを考慮する)方法はありますか?番号をデータフレームにする['Combo']? 私はpandas.DataFrame.drop_duplicates()
が一意の値だけを選択する方法かもしれないが、実際にはどの行も削除しないでください。
ありがとうございます。このサンプルデータフレームでは機能しましたが、実際に適用しようとするとエラーが発生しました:return pd.Series(n ,. '')) ValueError:オペランドを図形(5、)(0、)()とともにブロードキャストできませんでした。あなたはその機能が何をしているのか説明できますか?私はパイソンとパンダには本当に新しいです。 –
@MarcosSantana編集を参照してください?私はこの問題を理解したかもしれないと思う。 –
ああちょうどそれを見た。これで機能が実行されます。しかし、私はまだPtn3-Lig3ペアについて2つの値を得ています。その関数でなければ、その2番目の値をNaNなどに変更する方法がありますか?その機能をもう一度ありがとう! –