我有以下的數據幀DF(小提取物給出):如何分組數據並創建分檔?
time_diff avg_qty_per_day
1.450000 1.0
1.483333 1.0
1.500000 1.0
2.516667 1.0
2.533333 1.0
2.533333 1.5
3.633333 1.8
3.644567 5.0
我怎樣才能組成倉,以得到以下結果?:
1 3
2 3.5
3 6.8
的大小bin應該是可配置的。
我有以下的數據幀DF(小提取物給出):如何分組數據並創建分檔?
time_diff avg_qty_per_day
1.450000 1.0
1.483333 1.0
1.500000 1.0
2.516667 1.0
2.533333 1.0
2.533333 1.5
3.633333 1.8
3.644567 5.0
我怎樣才能組成倉,以得到以下結果?:
1 3
2 3.5
3 6.8
的大小bin應該是可配置的。
我想你需要cut
:
bins = [-np.inf, 2, 3, np.inf]
labels=[1,2,3]
df = df['avg_qty_per_day'].groupby(pd.cut(df['time_diff'], bins=bins, labels=labels)).sum()
print (df)
time_diff
1 3.0
2 3.5
3 6.8
Name: avg_qty_per_day, dtype: float64
如果要檢查標籤:
bins = [-np.inf, 2, 3, np.inf]
labels=[1,2,3]
df['label'] = pd.cut(df['time_diff'], bins=bins, labels=labels)
print (df)
time_diff avg_qty_per_day label
0 1.450000 1.0 1
1 1.483333 1.0 1
2 1.500000 1.0 1
3 2.516667 1.0 2
4 2.533333 1.0 2
5 2.533333 1.5 2
6 3.633333 1.8 3
7 3.644567 5.0 3
因此,我應該手動定義'labels'和'bin'?如果我有幾千個垃圾箱呢? – Dinosaurius
是的,它是python列表。 – jezrael
哦,我可以用這個:'bins = np.arange(df ['time_diff']。min(),df ['time_diff']。max()+ 2,2)' – Dinosaurius
這不是很清楚你想怎麼組的元素?例如,你有什麼類別? – rammelmueller
@rammelmuller:在我的示例中,bin大小爲1,根據'time_diff'的值創建箱。結果中的第二列是相應倉的「avg_qty_per_day」的總和。但我希望箱子的大小很靈活,以便我可以輕鬆地將其更改爲2或3或其他值,而不是默認值1. – Dinosaurius
箱子大小2.8如何? –