私は複数の列を持つデータフレームを持っています。私は各行に優先度を割り当てたい。 この優先順位は、他の列のデータに基づいて与えられます。パンダ:他の複数の列に基づいて列を作成します。適用失敗()
私は
def priority(Bcat,Brand,IPC,Customer, Type):
p=1
if Bcat != "*":
p+= len(Bcat)/3
if Brand != "*":
p+= 2
if IPC != "*":
p+= 4
if Customer != "*" & Customer != "REPLCUST":
p+= 8
if Type == "Default":
p+= -16
return p
優先機能を定義していると私は私のデータフレームに適用するために、今したいです。
これは私のデータフレームは、(2500行)のようになります。
Bcat Brand Customer IPC LOC MKT_BUD Type STARTEFF Value
A B C D E F 1 2001-01-01 1.0
私はこれをしようとしていますが、それは
df["Priority"] = df[["Bcat","Brand","IPC","Customer","Type"]].apply(priority,axis=1,args=("Bcat","Brand","IPC","Customer","Type"))
機能しないと、私はこのメッセージ
TypeError: ('priority() takes 5 positional arguments but 6 were given', 'occurred at index 0')
を取得
これも試しました
df["Priority"] = np.vectorize(priority(df.Bcat,df.Brand,df.IPC,df.Customer,df.Type))
と、このメッセージ
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
私はすべての解決策を検討しましたが、実装が最も速くなると思います。どうもありがとう! – Nicolas