Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để nhóm theo và lấy số lượng giá trị duy nhất và số lượng một số giá trị làm tổng hợp trên cùng một cột trong trăn gấu trúc?

Thực hiện một số xử lý trước bằng cách bao gồm col4==3 như một cột đi trước thời gian. Sau đó, sử dụng aggregate

df.assign(result_col=df.col4.eq(3).astype(int)).groupby(
    ['col1', 'col2']
).agg(dict(col3='size', col4='nunique', result_col='sum'))

           col3  result_col  col4
col1 col2                        
1    4        2           2     1
     6        1           0     1

câu trả lời cũ

g = df.groupby(['col1', 'col2'])
g.agg({'col3':'size','col4': 'nunique'}).assign(
    result_col=g.col4.apply(lambda x: x.eq(3).sum()))

           col3  col4  result_col
col1 col2                        
1    4        2     1           2
     6        1     1           0

sắp xếp lại một chút

g = df.groupby(['col1', 'col2'])
final_df = g.agg({'col3':'size','col4': 'nunique'})
final_df.insert(1, 'result_col', g.col4.apply(lambda x: x.eq(3).sum()))
final_df

           col3  result_col  col4
col1 col2                        
1    4        2           2     1
     6        1           0     1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bảng xuất mysql dựa trên một điều kiện cụ thể

  2. Echo trường boolean là có / không hoặc các giá trị khác

  3. mysql_real_escape_string không đủ tốt?

  4. Điều này có thể với mysql không?

  5. Sao lưu và khôi phục cơ sở dữ liệu MySQL trong PHP