簡體   English   中英

熊貓數據框中的聚合和計數

[英]Aggregation and counting in pandas dataframe

我有一個像這樣的多索引熊貓數據框

# df =
                      val
date       id          
2021-01-01 whatever1  0
           whatever2  1
           whatever3  0
           whatever4  3
           whatever5  2
2021-01-02 whatever2  0
           whatever7  3
2021-01-03 whatever3  0
           whatever4  0
...

我想計算第一個索引下不同值的出現次數,像這樣,

            0 1 2 3

2021-01-01  2 1 1 1
2021-01-02  1 0 0 1
2021-01-03  2 0 0 0
...

我該怎么做? 我最好的嘗試是這樣的:

df.groupby(by='date', level=0).agg([lambda x: [np.count_nonzero(x==i) for i in range(df.values.max())]])

# result = 
                     val
                <lambda>
data                    
2021-01-01  [2, 1, 1, 1]
2021-01-02  [1, 0, 0, 1]
2021-01-03  [2, 0, 0, 0]

我認為最簡單的方法是使用交叉表:

pd.crosstab(df.index.get_level_values('date'), df['val'])
Out: 
val         0  1  2  3
row_0                 
2021-01-01  2  1  1  1
2021-01-02  1  0  0  1
2021-01-03  2  0  0  0

暫無
暫無

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

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