gpt4 book ai didi

python - 获取python中每列的计数和唯一计数

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:48 24 4
gpt4 key购买 nike

假设我有一个 pandas 数据框,如下所示,

数据

id  A   B   C   D   E
1 NaN 1 NaN 1 1
1 NaN 2 NaN 2 2
1 NaN 3 NaN NaN 3
1 NaN 4 NaN NaN 4
1 NaN 5 NaN NaN 5
2 NaN 6 NaN NaN 6
2 NaN 7 5 NaN 7
2 NaN 8 6 2 8
2 NaN 9 NaN NaN 9
2 NaN 10 NaN 4 10
3 NaN 11 NaN NaN 11
3 NaN 12 NaN NaN 12
3 NaN 13 NaN NaN 13
3 NaN 14 NaN NaN 14
3 NaN 15 NaN NaN 15
3 NaN 16 NaN NaN 16

我正在使用以下命令,

pd.DataFrame(data.count().sort_values(ascending=False)).reset_index()

并得到以下输出,

    index   0
0 E 16
1 B 16
2 id 16
3 D 4
4 C 2
5 A 0

我想要以下输出,

columns count   unique(id) count
E 16 3
B 16 3
D 4 2
C 2 1
A 0 0

其中计数与前一个相同,但唯一(id)计数是存在的每列的唯一 ID。我希望两者都作为两个领域。

有人可以帮我做这件事吗?

谢谢

最佳答案

开头为:

In [7]: df
Out[7]:
id A B C D E
0 1 NaN 1 NaN 1.0 1
1 1 NaN 2 NaN 2.0 2
2 1 NaN 3 NaN NaN 3
3 1 NaN 4 NaN NaN 4
4 1 NaN 5 NaN NaN 5
5 2 NaN 6 NaN NaN 6
6 2 NaN 7 5.0 NaN 7
7 2 NaN 8 6.0 2.0 8
8 2 NaN 9 NaN NaN 9
9 2 NaN 10 NaN 4.0 10
10 3 NaN 11 NaN NaN 11
11 3 NaN 12 NaN NaN 12
12 3 NaN 13 NaN NaN 13
13 3 NaN 14 NaN NaN 14
14 3 NaN 15 NaN NaN 15
15 3 NaN 16 NaN NaN 16

这是一种相当不优雅的方式:

In [8]: (df.groupby('id').count() > 0).sum()
Out[8]:
A 0
B 3
C 1
D 2
E 3
dtype: int64

因此,只需按照您指定的方式创建基本 DataFrame 即可:

In [9]: counts = (df[['A','B','C','D','E']].count().sort_values(ascending=False)).to_frame(name='counts')

In [10]: counts
Out[10]:
counts
E 16
B 16
D 4
C 2
A 0

然后简单地:

In [11]: counts['unique(id) counts'] = (df.groupby('id').count() > 0).sum()

In [12]: counts
Out[12]:
counts unique(id) counts
E 16 3
B 16 3
D 4 2
C 2 1
A 0 0

关于python - 获取python中每列的计数和唯一计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40348733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com