mar*_*tin 2 python sql count distinct pandas
假设我有一个数据帧的熊猫叫df的柱子a和b和我想是的不同值的数量b每每个a.我会做:
distcounts = df.groupby('a')['b'].nunique()
Run Code Online (Sandbox Code Playgroud)
它给出了desidered结果,但它是Series对象而不是另一个DataFrame.我想要一个DataFrame.在常规SQL中,我会这样做:
SELECT a, COUNT(DISTINCT(b)) FROM df
Run Code Online (Sandbox Code Playgroud)
并且无法完全在Pandas中模拟此查询.如何?
我想你需要reset_index:
distcounts = df.groupby('a')['b'].nunique().reset_index()
Run Code Online (Sandbox Code Playgroud)
样品:
df = pd.DataFrame({'a':[7,8,8],
'b':[4,5,6]})
print (df)
a b
0 7 4
1 8 5
2 8 6
distcounts = df.groupby('a')['b'].nunique().reset_index()
print (distcounts)
a b
0 7 1
1 8 2
Run Code Online (Sandbox Code Playgroud)