Pandas 同时显示唯一计数和唯一值?
Pandas show both unique counts and unique values?
假设我有一个这样的数据框:
import pandas as pd
df = pd.DataFrame([
('a', 'aa'),
('b', 'aa'),
('c', 'bb'),
('d', 'bb'),
('e', 'cc'),
('f', 'cc'),
('h', 'cc')
], columns=['group', 'id'])
我做了一个 groupby 来显示唯一值的计数以及唯一值本身。这是我现在正在做的事情:
df1 = df.groupby(["id"])["group"].nunique()
print(df1)
id
aa 2
bb 2
cc 3
df2 = df.groupby(['id'])['group'].agg(['unique'])
print(df2)
id
aa [a, b]
bb [c, d]
cc [e, f, h]
但是,我试图让这两个并排显示(一列显示计数,一列显示值,如下所示。有什么方法可以实现吗?
id count values
aa 2 [a, b]
bb 2 [c, d]
cc 3 [e, f, h]
res = df.groupby('id')['group'].agg(count='nunique', values='unique')
输出
>>> res
count values
id
aa 2 [a, b]
bb 2 [c, d]
cc 3 [e, f, h]
假设我有一个这样的数据框:
import pandas as pd
df = pd.DataFrame([
('a', 'aa'),
('b', 'aa'),
('c', 'bb'),
('d', 'bb'),
('e', 'cc'),
('f', 'cc'),
('h', 'cc')
], columns=['group', 'id'])
我做了一个 groupby 来显示唯一值的计数以及唯一值本身。这是我现在正在做的事情:
df1 = df.groupby(["id"])["group"].nunique()
print(df1)
id
aa 2
bb 2
cc 3
df2 = df.groupby(['id'])['group'].agg(['unique'])
print(df2)
id
aa [a, b]
bb [c, d]
cc [e, f, h]
但是,我试图让这两个并排显示(一列显示计数,一列显示值,如下所示。有什么方法可以实现吗?
id count values
aa 2 [a, b]
bb 2 [c, d]
cc 3 [e, f, h]
res = df.groupby('id')['group'].agg(count='nunique', values='unique')
输出
>>> res
count values
id
aa 2 [a, b]
bb 2 [c, d]
cc 3 [e, f, h]