[英]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列中的功能可能有所不同。 它並不總是重復的順序。
groupby
和nunique
df.groupby('D').F.nunique().drop('--')
ABC-Thu 2
DEF-Thu 1
Name: F, dtype: int64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.