在多索引中計算每個級別 0 的級別 1 大小并創建新列(名為counts)的pythonic 方法是什么。我可以通過以下方式實作這一點,但想了解任何更簡單的方法:
代碼
df = pd.DataFrame({'STNAME':['AL'] * 3 ['MI'] * 4,
'CTYNAME':list('abcdefg'),
'COL': range(7) }).set_index(['STNAME','CTYNAME'])
print(df)
COL
STNAME CTYNAME
AL a 0
b 1
c 2
MI d 3
e 4
f 5
g 6
df1 = df.groupby(level=0).size().reset_index(name='count')
counts = df.merge(df1,left_on="STNAME",right_on="STNAME")["count"].values
df["counts"] = counts
這是所需的輸出:
COL counts
STNAME CTYNAME
AL a 0 3
b 1 3
c 2 3
MI d 3 4
e 4 4
f 5 4
g 6 4
uj5u.com熱心網友回復:
您可以groupby.transform在此處使用with size 而不是合并:
output = df.assign(Counts=df.groupby(level=0)['COL'].transform('size'))
print(output)
COL Counts
STNAME CTYNAME
AL a 0 3
b 1 3
c 2 3
MI d 3 4
e 4 4
f 5 4
g 6 4
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/392851.html
