0
我想弄清楚什麼時候特定的用戶第一次達到設定的目標。作爲簡化版本我有2個數據集(捐款1和1募捐)Python熊貓更好的方式來找到數量大於目標的日期
import pandas as pd
import numpy as np
Donations = pd.DataFrame({
"id": pd.Series([1,2,3,4,5,6,7,8,9,10]),
"amount": pd.Series([10, 15, 10, 15, 10, 20, 70, 20,20,30]),
"solicitor": pd.Series([1, 1, 2, 2, 3, 4, 5, 1,1,2]),
"day": ([1,2,1,2,2,3,2,4,5,5]),
})
Fundraisers = pd.DataFrame({
"id": pd.Series([1,2,3,4,5]),
})
所以假設我們的目標是30,我想找到的第一天至少$ 30提出每個募捐活動。 我使用GROUPBY和循環
def test(group, amount):
group = group.sort("day")
myamount = 0
date = np.NaN
for i in group.index:
myamount = myamount + group.loc[i, "amount"]
if (myamount >= amount):
date = group.loc[i, "day"]
break
return date
Fundraisers = Fundraisers.set_index(['id'])
Fundraisers["first day"] = Donations.groupby(["solicitor"]).apply(lambda x: test(x, 30))
Fundraisers = Fundraisers.reset_index()
我剛剛得到的感覺有一種更好的方式去了解這比使用for循環遍歷每個捐款來完成這一點。所以想知道是否有更好的方法去做這件事?
乾杯。唯一需要改變的是在cumulative_amount代碼之前添加Donations = Donations.sort(「day」)。 – Wizuriel 2014-11-05 21:37:22
按建議編輯 – Daniele 2014-11-05 23:55:38