我有一个pandas数据框,我想按单列的值对数据进行分区。例如。 0-1,1-2等,从0开始,以1结束,间隔为0.1,取每个箱内每列的平均值。
我正在尝试使用pandas的.groupby功能来完成此任务。请参阅下面的代码:
import pandas as pd
import numpy as np
my_df = pd.DataFrame({"a": np.random.random(100),
"b": np.random.random(100),
"id": np.arange(100)})
bins = np.linspace(0, 1, 0.1)
groups = my_df.groupby(np.digitize(my_df.a, bins))
binned_data = groups.mean()
print binned_data
然后打印行给出一个索引为“1”的行,即使“a”列的数据应该具有指定的bin的值范围。
我认为创建“垃圾箱”存在问题,但我无法解决问题。
我希望以0.1为间隔从0到1分箱10行。我怎么能做到这一点?
非常感谢。