2
我首先创建了一些数据:创建NAN类别后,GROUPBY对象上聚集了错误
df = pd.DataFrame(data = {"A":np.random.random_integers(1,10,10), "B":np.arange(1,11,1)})
df.A.ix[3,4] = np.nan
后来我有一个PD数据帧与NaN的
A B
0 7 1
1 1 2
2 3 3
3 NaN 4
4 NaN 5
5 9 6
6 2 7
7 10 8
8 6 9
9 6 10
我试着组列A采用PD .cut功能在每个组别添加使用汇总功能
bin_S = pd.cut(df.A, [-math.inf, 3,5,8,9, math.inf],right= False)
df.groupby(bin_S).agg("count")
但是Nan值没有分组(没有Nan类别)
A B
A
[-inf, 3) 2 2
[3, 5) 1 1
[5, 8) 3 3
[8, 9) 0 0
[9, inf) 2 2
然后我试图通过添加一个名为新类别“失踪”:
bin_S.cat.add_categories("Missing", inplace = True)
bin_S.fillna(value = "Missing", inplace = True
的分级系列看起来不错。但是,这种聚合并不是我所期望的。
df.groupby(bin_S).agg("count")
结果是,
A B
A
[-inf, 3) 2 2
[3, 5) 1 1
[5, 8) 3 3
[8, 9) 0 0
[9, inf) 2 2
Missing 0 2
我期待列A和B列是完全一样的。为什么他们在“失踪”行上有所不同?真正的问题涉及到每个组的更复杂的操作。这个问题真的让我感到困扰,因为分组Nan值可能不可靠。
感谢。 df.groupby(bin_S).agg(np.size)。我改变了一点,所以没有多层次的索引 –