如何对不同的熊猫进行分组和求和

时间:2020-09-09 14:01:56

标签: python-3.x pandas

我有一个数据框df,我想将其按列LetterFrom进行分组。以下示例df:

   Letter  Price From        RT      To   
0   A      4     2020-06-04  11  2020-06-05
1   B      12    2020-06-04  11  2020-06-05
2   A      20    2020-06-04  11  2020-06-05
3   A      5     2020-06-04  11  2020-06-05
4   B      89    2020-06-05  11  2020-06-06
5   A      56    2020-06-05  11  2020-06-06
6   B      1     2020-06-06  11  2020-06-07

在标准SQL中,我将编写一个查询以获取所需的结果。

SELECT 
 Letter,
 From,
 SUM(Price),
 MAX(RT)
FROM
  some.table
GROUP BY Letter,From

我尝试了以下操作,但没有用。

df.groupby(['Letter','From']).sum(['RT','To'])

2 个答案:

答案 0 :(得分:0)

尝试一下:

df['From'] = pd.to_datetime(df['From'])
df['To'] = pd.to_datetime(df['To'])
df = df.groupby(by=['Letter', 'From'], as_index=False).agg({
    'Price': 'sum',
    'RT': 'max'
})
print(df)

  Letter       From  Price  RT
0      A 2020-06-04     29  11
1      A 2020-06-05     56  11
2      B 2020-06-04     12  11
3      B 2020-06-05     89  11
4      B 2020-06-06      1  11

答案 1 :(得分:0)

要聚合的列需要紧接<?php session_start(); include 'connection.php'; if(isset($_SESSION['email'])){ $email = $_SESSION['email']; $email_check = $con->prepare("SELECT * FROM `user_reg` WHERE email =?"); $email_check->bind_param("s",$email_i); $email_i = $email; $email_check->execute(); $result = mysqli_stmt_get_result($email_check); $email_count = mysqli_num_rows($result); $row = mysqli_fetch_assoc($result); $token = bin2hex(random_bytes(25)); if ($email_count>0){ if($row['status']==="inactive"){ $insert_query = $con->prepare("UPDATE `user_reg` SET `token`=? WHERE `email`=?"); $insert_query->bind_param("ss", $token_i, $email_i); $token_i = $token; $email_i = $email; $query = $insert_query->execute(); if ($query){ $username = $row['username']; $url = ""; $subject = "Email verification"; include 'templates/email_con.php'; include 'templates/email_verifiy_tempate.php'; if (mail($email, $subject, $body, $headers)){ $_SESSION['msg']="Check your email for activation of your account"; echo "Email Sent..."; header('location:login.php'); }else{ echo "Email not sent, please check your email"; } $insert_query->close(); }else{ echo "error"; } }else{ $_SESSION['msg']="You are alredy verified, login to continue"; echo "verified"; } }else{ echo "Email dosen't exists, please sign up"; } }else { header('location:login.php'); }之后才能用作切片器,就像切片标准df一样。有关可以传递给groupby的参数,请参见docs。但是实际上,您需要aggregate or agg才能将具有不同功能的每一列进行汇总。

sum