我正在尝试对以下数据帧上的字段cat1, cat2, cat3
进行聚合。我需要count the number of trials
和每个组中的number of unique subjects
。下面的代码确实发现试验次数正确,但受试者人数不正确。你知道吗
mydata = pd.DataFrame(np.array([
['Adam', 1L, 1L, 1L, 1L],
['Adam', 2L, 1L, 2L, 1L],
['Adam', 3L, 2L, 2L, 3L],
['Adam', 1L, 1L, 1L, 1L],
['Adam', 2L, 1L, 1L, 2L],
['Adam', 3L, 1L, 2L, 1L],
['Bob', 1L, 1L, 2L, 3L],
['Bob', 2L, 1L, 2L, 3L],
['Bob', 3L, 1L, 1L, 1L],
['Bob', 1L, 1L, 2L, 3L],
['Bob', 2L, 2L, 2L, 3L],
['Bob', 3L, 1L, 3L, 1L]], dtype=object),
columns = ['ID','trial','cat1','cat2','cat3']
)
grouped = mydata.groupby(['cat1', 'cat2', 'cat3']).agg(['count'])
grouped.reset_index()
结果:
cat1 cat2 cat3 ID trial
count count
0 1 1 1 3 3
1 1 1 2 1 1
2 1 2 1 2 2
3 1 2 3 3 3
4 1 3 1 1 1
5 2 2 3 2 2
我期待的结果是:
cat1 cat2 cat3 trial ID
0 1 1 1 3 2
1 1 1 2 1 1
2 1 2 1 2 1
3 1 2 3 3 1
4 1 3 1 1 1
5 2 2 3 2 2
你可以用
pd.Series.nunique
在ID
上aggregate
,从trail
得到count
相关问题 更多 >
编程相关推荐