I以下のデータフレームがあります。私は "塗りつぶしたい選択値
df2 = pd.DataFrame({ 'sites_lookup' : (5,10,15,20,25,30,35,40),
'supply_lookup' : (50,100,150,200,250,300,350,400)})
:私も別のシミュレーションから得られた値を持つ別のデータフレームを持っている
import pandas as pd
df = pd.DataFrame({ 'A__area_ID' : np.arange(3),
'B_demand' : (150, 300, 250),
'C_sites' : (10, 20, 30),
'D_supply' : (100, 200, 300),
'E_margin' : (-50, -100, 50),
'F_new_sites' : ('', '', '')})
をF_new_sites '列に必要なセルタワーサイト(df2.sites_lookupから)を必要最小限にして、各領域の需要を満たすことができます(各行は特定の地域です)。
'E_margin'は容量マージン(需要量)ですので、容量が負の場合はセルサイトを追加します。
第2のデータフレーム(df2)は、設定された数のセルタワーサイト(sites_lookup)によってどのくらいの供給(supply_lookup)が提供されるかを示します。
私は次のように誤って試みた:
if df.E_margin < 0 :
df.F_new_sites [df2.supply_lookup >= df.demand] = df2.sites_lookup
else = 0
「E_new_sitesは」需要存在を満たすために必要なサイトの合計数を表し、私は、最後のデータフレームは次のようになりたい:
output = pd.DataFrame({ 'A__area_ID' : np.arange(3),
'B_demand' : (150, 300, 250),
'C_sites' : (10, 20, 30),
'D_supply' : (100, 200, 300),
'E_margin' : (-50, -100, 50),
'F_new_sites' : ('15', '30', '0')})
需要と供給が均等に一致しない場合があるため、supply_lookupからのバケットが現在の需要を超える(このレベルを満たすために)必要があります。
あなたは 'supply_lookup'カラムで' D_supply - E_margin'を探していますか? 'sites_lookup'の値を' df ['F_new_sites'] 'に渡しますか? –
E_marginが負の場合は、B_demandとsupply_lookupの値を一致させ、F_new_sitesに正しいsites_lookup値を設定します。私はそれが意味をなさないことを願っています、Ed –