簡體   English   中英

基於另一列對數據框進行分組/匯總和求和

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

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