[英]Calculate ratio in Python Pandas?
我正在嘗試計算組 1: group(>1) 在同一年的比率,我的數據框具有以下格式:
團體 | 年 | 數數 |
---|---|---|
1 | 2020 | 3 |
1 | 2021 | 4 |
2 | 2020 | 5 |
2 | 2021 | 6 |
3 | 2020 | 2 |
3 | 2021 | 3 |
結果應該是這樣的:
年 | 比率 |
---|---|
2020 | 3/7 |
2021 | 4/9 |
我真的被這個困住了,有人可以幫忙嗎?
您可以將 DataFrame 中的1
值划分為group
by aggregate all other groups aggregatet by sum
:
#if need equal
m = df['Group'].eq(1)
#if need greater
m = df['Group'].gt(1)
a = df[~m].set_index('Year')['Count'].div(df[m].groupby('Year')['Count'].sum())
print (a)
Year
2020 0.428571
2021 0.444444
Name: Count, dtype: float64
df1 = a.reset_index(name='Ratio')
print (df1)
Year Ratio
0 2020 0.428571
1 2021 0.444444
您可以使用GroupBy.sum
和div
:
# get sum per Group+Year
df2 = df.groupby(['Group', 'Year']).sum()
# divide 1st group by sum of others
out = (df2.loc[1].div(df2.drop(1).groupby(level='Year').sum())
#.reset_index() # optional, uncomment if you want Year as column
)
輸出:
Count
Year
2020 0.428571
2021 0.444444
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.