Pandas将每列的唯一值计算为系列

Toa*_*ter 0 python pandas

我想收集Pandas DataFrame中每列的简单统计信息.收集非空数据点的数量是没有问题的:

valueCountSeries = mydataframe.count()
Run Code Online (Sandbox Code Playgroud)

但是,我想将此信息与包含唯一值数量的系列相结合.目前我按如下方式计算此值:

header = list(mydataframe.columns.values)
unique = [(c, mydataframe[c].nunique()) for c in header]
Run Code Online (Sandbox Code Playgroud)

所以我有独特但不是熊猫系列.
基本上我想要一个系列,所以我可以进入下一步:

df = pd.DataFrame([valueCountSeries, uniqueCountSeries])
Run Code Online (Sandbox Code Playgroud)

是否有一种Pandas式的方式来获得独特的系列,所以我可以将valueCountSeries的结果加入到新的DataFrame中?

调整下面的结果.给出以下矩阵:

    A  B  C  D
 0  4  0  3  3
 1  3  1  3  2
 2  4  0  0  nan
 3  2  1  0  1
 4  1  0  1  4
Run Code Online (Sandbox Code Playgroud)

我想要计算:

   count  nunique
A      5        4
B      5        2
C      5        3
D      4        4
Run Code Online (Sandbox Code Playgroud)

谢谢!

unu*_*tbu 6

import numpy as np
import pandas as pd
np.random.seed(0)
df = pd.DataFrame(np.random.randint(5, size=(5,4)), columns=list('ABCD'))
print(df)
#    A  B  C  D
# 0  4  0  3  3
# 1  3  1  3  2
# 2  4  0  0  4
# 3  2  1  0  1
# 4  1  0  1  4
dct = {func.__name__:df.apply(func) for func in (pd.Series.nunique, pd.Series.count)}
print(pd.concat(dct, axis=1))
Run Code Online (Sandbox Code Playgroud)

产量

   count  nunique
A      5        4
B      5        2
C      5        3
D      5        4
Run Code Online (Sandbox Code Playgroud)