簡體   English   中英

使用 groupby 計算每個 pandas 列中唯一值的頻率

[英]Count the frequency of unique values in every pandas column using groupby

如何使用 groupby 獲取每個數據框列中的所有唯一值及其頻率?

我已經嘗試過 stats.mode ,它提供了我想用其他列值的頻率擴展的最常見值的信息。

from scipy import stats 
source = pd.DataFrame({'col1' : ['A', 'A', 'A','A'], 
                  'col2' : ['a', 'a', 'a', 'b'],
                  'col3' : ['c','c','d','d']})
source.groupby(['col1'])[['col2', 'col3']].agg(stats.mode)

結果:

col1 
                 col2         col3      
A                ([a], [3])   ([c], [2])

我想得到:

col1 
                 col2               col3        
A                ([a, b], [3,1])    ([c,d], [2,2])

您需要一個自定義函數:

def cust_mode(s):
    counts = s.value_counts()
    return list(counts.index), list(counts)

out = source.groupby(['col1'])[['col2', 'col3']].agg(cust_mode)

輸出:

                  col2              col3
col1                                    
A     ([a, b], [3, 1])  ([c, d], [2, 2])
for k in df.columns:
    print(df[k].value_counts())

給你你想要的。 如果要包含 nan,則在value_counts的括號之間dropna=False

暫無
暫無

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

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