一個GROUPBY操作我有這樣的示例表的結果:情節大熊貓
ID Date Days Volume/Day
0 111 2016-01-01 20 50
1 111 2016-02-01 25 40
2 111 2016-03-01 31 35
3 111 2016-04-01 30 30
4 111 2016-05-01 31 25
5 111 2016-06-01 30 20
6 111 2016-07-01 31 20
7 111 2016-08-01 31 15
8 111 2016-09-01 29 15
9 111 2016-10-01 31 10
10 111 2016-11-01 29 5
11 111 2016-12-01 27 0
0 112 2016-01-01 31 55
1 112 2016-02-01 26 45
2 112 2016-03-01 31 40
3 112 2016-04-01 30 35
4 112 2016-04-01 31 30
5 112 2016-05-01 30 25
6 112 2016-06-01 31 25
7 112 2016-07-01 31 20
8 112 2016-08-01 30 20
9 112 2016-09-01 31 15
10 112 2016-11-01 29 10
11 112 2016-12-01 31 0
我試圖讓我的表格最後的表像這樣通過ID和日期分組後下方。
ID Date CumDays Volume/Day
0 111 2016-01-01 20 50
1 111 2016-02-01 45 40
2 111 2016-03-01 76 35
3 111 2016-04-01 106 30
4 111 2016-05-01 137 25
5 111 2016-06-01 167 20
6 111 2016-07-01 198 20
7 111 2016-08-01 229 15
8 111 2016-09-01 258 15
9 111 2016-10-01 289 10
10 111 2016-11-01 318 5
11 111 2016-12-01 345 0
0 112 2016-01-01 31 55
1 112 2016-02-01 57 45
2 112 2016-03-01 88 40
3 112 2016-04-01 118 35
4 112 2016-05-01 149 30
5 112 2016-06-01 179 25
6 112 2016-07-01 210 25
7 112 2016-08-01 241 20
8 112 2016-09-01 271 20
9 112 2016-10-01 302 15
10 112 2016-11-01 331 10
11 112 2016-12-01 362 0
接着,我希望能夠以提取音量/每ID天,所有的CumDays值和每個ID和日期的所有容積/日的值的第一個值。因此,我可以將它們用於進一步計算並繪製Volume/Day vs CumDays。 ID爲111的例子,Volume/Day的第一個值將只有50,ID:112,它將只有55. ID:111的所有CumDays值將是20,45 ...和ID:112,它會是31,57 ...對於所有批量/天--- ID:111,將在50,40 ...和ID:112將55,45 ...
我的解決辦法:
def get_time_rate(grp_df):
t = grp_df['Days'].cumsum()
r = grp_df['Volume/Day']
return t,r
vals = df.groupby(['ID','Date']).apply(get_time_rate)
vals
這樣做,累計計算根本不起作用。它返回原始的Days值。這不允許我進一步提取Volume/Day的第一個值,所有CumDays值和我需要的所有Volume/Day值。任何意見或幫助如何去解決它將不勝感激。謝謝
你爲什麼要張貼HTML嗎?這是你如何接收你的數據? – piRSquared
@piRSquared,no。這是我組織它,所以它可以在S.O.上看到。有沒有其他更好的方法來顯示S.O的表格,除了用html形式表示它或拍攝它的照片? – dlvr
我們所看到的只是原始HTML,除非我們點擊運行代碼片段。請粘貼數據文本並突出顯示該文本,然後單擊與{{}}相似的按鈕。這將使每行縮進四個空格。反過來以便利的方式呈現您的餐桌,以便我們幫助您 – piRSquared