簡體   English   中英

在 Python Pandas 中計算比率?

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

# 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.

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