簡體   English   中英

熊貓df中多列的唯一記錄計數

[英]Count of unique records by multiple columns in a pandas df

我正在嘗試返回pandas df中唯一記錄的總數。 這由Columns ['D','F']的值確定。 因此,列D中有特定的位置。列F顯示了這些位置發生了多少事件。 每個事件可以有多個功能,但是我只對每個地方有多少個事件感興趣。 那么在D列中每個位置的F列中有多少計數

因此,例如下面的輸出將是

ABC-Thu = 2

DEF-Thu = 1

import pandas as pd


d = ({
    'C' : ['08:00:00','XX','08:10:00','XX','08:41:42','XX','08:50:00','XX', '09:00:00', 'XX','09:15:00','XX','09:21:00','XX','09:30:00','XX','09:40:00','XX'],
    'D' : ['ABC-Thu','--','ABC-Thu','--','DEF-Thu','--','ABC-Thu','--','DEF-Thu','--','ABC-Thu','--','ABC-Thu','--','DEF-Thu','--','ABC-Thu','--'],
    'E' : ['Num:','','Num:','','Num:','','Num:','','Num:', '','Num:','','Num:','','Num:', '','Num:', ''],
    'F' : ['1','','1','','1','','1','','1', '','2','','2','','1', '','2',''],   
    'A' : ['A','','A','','A','','A','','A','','A','','A','','A','','A',''],           
    'B' : ['Stop','','Res','','Stop','','Start','','Res','','Stop','','Res','','Start','','Start','']
})

df = pd.DataFrame(data=d)

輸出:

    A      B         C        D     E  F
0   A   Stop  08:00:00  ABC-Thu  Num:  1
1                   XX       --         
2   A    Res  08:10:00  ABC-Thu  Num:  1
3                   XX       --         
4   A   Stop  08:41:42  DEF-Thu  Num:  1
5                   XX       --         
6   A  Start  08:50:00  ABC-Thu  Num:  1
7                   XX       --         
8   A    Res  09:00:00  DEF-Thu  Num:  1
9                   XX       --         
10  A   Stop  09:15:00  ABC-Thu  Num:  2
11                  XX       --         
12  A    Res  09:21:00  ABC-Thu  Num:  2
13                  XX       --         
14  A  Start  09:30:00  DEF-Thu  Num:  1
15                  XX       --         
16  A  Start  09:40:00  ABC-Thu  Num:  2
17                  XX       --       

如果我使用下面的代碼運行此命令,由於D列中的-,我得到4

df1 = df.groupby(['F', 'D']).ngroups

輸出:

4

我還想知道是否有更簡單的方法來確定D,F列每個位置的總計數。而不是總計數。 這段代碼只是一個例子。 我的數據集的D列可以有50多個不同的位置,而F列可以有10個事件。要添加更多的約束,每個文件的位置都應更改。 因此,我需要一種快速的方法來確定每次會議的次數。

是否有比逐個計數更有效的方法。 我不確定我是否考慮得過多。 同樣令人困惑的是,B列中的功能可能有所不同。 它並不總是重復的順序。

groupbynunique

df.groupby('D').F.nunique().drop('--')

ABC-Thu    2
DEF-Thu    1
Name: F, dtype: int64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM