[英]Grouping/Summarising and summing a data-frame based on another column
我有一個從 numpy 數組創建的數據框( df
),如下所示:
0.22 1
0.31 1
0.91 1
0.48 2
0.2 2
0.09 2
0.9 3
0.71 3
0.73 3
0.65 4
0.16 4
0.9 4
0.75 5
0.87 5
0.72 5
0.68 6
0.54 6
0.48 6
我想創建一個匯總數據框,將第一列中的值與其在第二列中的位置相加。 因此,我希望從上面的示例中輸出的匯總數據幀如下所示:
3.68 total
2.79 total
3.83 total
其中:匯總數據框中的第一個值等於: 0.22+0.48+0.9+0.65+0.75+0.68=3.68
摘要數據框中的第二個值等於: 0.31+0.2+0.71+0.16+0.87+0.54=2.79
摘要數據框中的第三個值等於: 0.91+0.09+0.73+0.9+0.72+0.48=3.83
您可以執行 groupby 兩次,一次用於標記每個組內的相對位置,一次用於求和:
df[0].groupby(df.groupby(df[1]).cumcount()).sum()
輸出:
0 3.68
1 2.79
2 3.83
Name: 0, dtype: float64
選項 2 :如果所有組都有相同數量的元素,我們可以重塑:
df[0].values.reshape(df[1].max(),-1).sum(0)
# out
# array([3.68, 2.79, 3.83])
對於此類問題,以下模式通常很有用。 要按第 n 行進行分組,如果您的索引已排序且連續,則可以使用df.index % n
。
n = 3
df.groupby(df.index % n)[0].sum()
輸出
0 3.68
1 2.79
2 3.83
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.