根据另一列对数据帧进行分组/汇总和求和

时间:2020-09-17 20:35:31

标签: python pandas

我有一个由如下所示的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

2 个答案:

答案 0 :(得分:2)

您可以进行分组两次,一次标记每个组中的相对位置,一次进行求和:

$data

输出:

// Pass id to test.auth
public function show_auth($id)
{
    return view('test.auth', compact('id'));
}

// Here it gets id and dd($data) works
public function post_auth(Request $request)
{
    $id = $request->id;

    $data = DB::table('kuponai')->where('id', $id)->get();
    //dd($data);
    
    return view('test.view', compact('data'));
}

// Function from before dump doesn't work and returns view
public function view($data)
{
    dump($data);

    return view('test.view');
}

选项2 :如果所有组的元素数均相同,我们可以重塑形状:

public function check(Request $request)
    {
      $id = $request->id;

      //
      
      return view('test.auth',compact('id'));
      
    }
    public function show_auth($id)
    {
        return view('test.auth',compact('id'));
        
    }
    public function post_auth(Request $request)
    {
      $id = $request->id;
      $pin = $request->pin;
      $mail = $request->elpastas;

      $data = DB::table('kuponai')
      ->where('id', $id)
      ->get();
      //dd($data);

      return route('view.show',compact('data'));
    }
    public function view($data)
    {
      $d = $this->post_auth($data);
      //dd($data);
        return view('test.view');
    }

答案 1 :(得分:0)

对于此类问题,以下模式通常很有用。要按第n行分组,如果索引已排序且连续,则可以使用df.index % n

n = 3
df.groupby(df.index % n)[0].sum()

输出

0    3.68
1    2.79
2    3.83
相关问题