我是資料透視表的新手。我只想按 Mth 計算每個 Age Grp 的數量。我試過
pivot1=pd.pivot_table(df,index=[ "Age Grp"], columns=["Mth"], values=["Age Grp"], aggfunc=pd.Series.nunique)
但得到 ValueError: Grouper for 'Age Grp' not 1-dimensional
DF
|Age Grp | Mth |
| 0-4 | 1 |
| 5 -9 | 5 |
| 0-4 | 10 |
| 10-14 | 5 |
期望的結果
Mth | 1 | 5 | 10 |
|Age Grp | |
| 0-4 | 1 | 0 | 1|
| 5 -9 | 0 | 1 | 0|
| 10-14 | 0 | 1 | 0|
uj5u.com熱心網友回復:
我們可以嘗試crosstab代替pivot_tablewithvalues和 an aggfuncthen usefillna將NaN值替換為0:
ct_df = pd.crosstab(
df['Age Grp'], df['Mth'],
values=df['Age Grp'], aggfunc='nunique'
).fillna(0, downcast='infer')
ct_df:
Mth 1 5 10
Age Grp
0-4 1 0 1
10-14 0 1 0
5-9 0 1 0
或groupby nunique unstack:
df_us = df.groupby(
['Age Grp', 'Mth']
)['Age Grp'].nunique().unstack(fill_value=0)
df_us:
Mth 1 5 10
Age Grp
0-4 1 0 1
10-14 0 1 0
5-9 0 1 0
設定和匯入
import pandas as pd # 1.3.4
df = pd.DataFrame({
'Age Grp': ['0-4', '5-9', '0-4', '10-14'], 'Mth': [1, 5, 10, 5]
})
uj5u.com熱心網友回復:
或者:
df.groupby(['Age Grp', 'Mth']).size().unstack(fill_value=0)
Output:
Mth 1 5 10
Age Grp
0-4 1 0 1
10-14 0 1 0
5-9 0 1 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/333959.html
