0
我正在建立一個蒙特卡羅模型,並且需要模擬每個月在一個給定的月份內我捕獲多少個新項目。每個月我都會添加一個隨機數量的已知平均值和stdev的項目。大熊貓交錯零的數據幀
months = ['2017-03','2017-04','2017-05']
new = np.random.normal(4,3,size = len(months)).round()
print new
[ 1. 5. 4.]
df_new = pd.DataFrame(zip(months,new),columns = ['Period','newPats'])
print df_new
Period newPats
0 2017-03 1.0
1 2017-04 5.0
2 2017-05 4.0
我需要將其轉換爲一個項目x月的數據框,其中值是一個零,直到給定的項目開始的月份。
這裏的形狀,我有:
df_full = pd.DataFrame(np.ones((new.sum(), len(months))),columns = months)
2017-03 2017-04 2017-05
0 1.0 1.0 1.0
1 1.0 1.0 1.0
2 1.0 1.0 1.0
3 1.0 1.0 1.0
4 1.0 1.0 1.0
5 1.0 1.0 1.0
6 1.0 1.0 1.0
7 1.0 1.0 1.0
8 1.0 1.0 1.0
9 1.0 1.0 1.0
和這裏的輸出我需要:
#perform transformation
print df_out
2017-03 2017-04 2017-05
0 1 1 1
1 0 1 1
2 0 1 1
3 0 1 1
4 0 1 1
5 0 1 1
6 0 0 1
7 0 0 1
8 0 0 1
9 0 0 1
的規則是,有1個項目在2017-03增加,因此,所有時段= 1爲第一個記錄。接下來的5個項目是在2017-04年添加的,因此之前的所有期間都爲0.最後的4個項目是在2017-05年新增的,所以它們在上個月只有1個。這將進入monte carlo模擬,將運行數千次,所以我不能手動迭代列/行 - 任何向量化的建議如何處理?