我是Python的新手,我努力編寫PHP/SQL中看起來很簡單的東西,我希望你能幫助我。Python函數使用來自另一個Dataframe的值在Pandas Dataframe中添加值
我有2個熊貓數據框,爲了更好的理解我已經簡化了。
在第一個數據幀df2015,我對2015年 銷售!注意,不幸的是,我們沒有每個商店的所有值!
>>> df2015
Store Date Sales
0 1 2015-01-15 6553
1 3 2015-01-15 7016
2 6 2015-01-15 8840
3 8 2015-01-15 10441
4 9 2015-01-15 7952
而另一數據框命名df2016的銷售預測在2016年,其中列出ALL商店。
(如你猜,列SalesForecast是填補列。)
>>> df2016
Store Date SalesForecast
0 1 2016-01-15
1 2 2016-01-15
2 3 2016-01-15
3 4 2016-01-15
4 5 2016-01-15
我想創建一個函數,在df2016每一行將df2015獲取銷售值,和例如,這些值將增加5%,並將這些新值添加到df2016的SalesForecast列中。
比方說預測是我創造,我要應用功能:
def forecast(store_id,date):
sales2015 = df2015['Sales'].loc[(df2015['Store'].values == store_id) & (df2015['Date'].values == date)].values
forecast2016 = sales2015 * 1.05
return forecast2016
我在下面硬編碼的方式測試了這個功能,它的工作原理:
>>> forecast(1,'2015-01-15')
array([ 6880.65])
但在這裏,我們是我的問題在哪裏......我如何將這個函數應用於數據框?
這將是很容易的在df2016創建於各行的循環來做到這一點在PHP和df2015檢索值(如果存在的話)由選擇和WHERE商店= STORE_ID和日期=日期 .. ...但它似乎邏輯與Pandas Dataframes和Python不一樣。
我曾嘗試適用功能如下:
df2016['SalesForecast'] = df2016.apply(df2016['Store'],df2016['Date'])
,但我無法正確地將這些參數或有件事我做錯了..
我以爲我不有沒有好的方法,或者也許我的方法不適合熊貓和Python ..?
我的道歉,我覺得'broadcast'說法是不必要的。我已經刪除它。 – ericmjl