[英]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.