如何分组数据和创建垃圾箱?

时间:2017-08-29 14:34:56

标签: python python-2.7 pandas

我有以下DataFrame 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的大小应该是可配置的。

1 个答案:

答案 0 :(得分:2)

我认为你需要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