按列值分组

统计相同卡号下最大交易号

 
a[["卡号","交易ID"]].groupby("卡号").max()

 

    

求sum要先判断其为数字,若为字符串,pandas会直接将其拼接,而不是报错

 
import pandas as pd  

# 假设你有以下的DataFrame  
data = {  
    '交易号': ['T001', 'T002', 'T003', 'T004', 'T005', 'T006'],  
    '卡号': ['C001', 'C002', 'C001', 'C003', 'C002', 'C001'],  
    '金额': [100, 200, 150, 300, 250, 120]  
}  
df = pd.DataFrame(data)  

# 按卡号分组,并计算交易笔数和总金额  
grouped = df.groupby('卡号').agg({'交易号': 'size', '金额': 'sum'}).reset_index()  
    
# 将列名更改为更直观的名称  
grouped.columns = ['卡号', '交易笔数', '总金额']  
    
print(grouped)
    

 
    卡号  交易笔数  总金额
0  C001     3      370
1  C002     2      450
2  C003     1      300
    

 

    

 
import pandas as pd  

# 示例数据  
data = {  
    '交易号': ['T1', 'T2', 'T3', 'T4', 'T5','T6'],  
    '卡号': ['C1', 'C1', 'C2', 'C2', 'C3','C3'],  
    '商户1': ['M1', 'M1', 'M2', 'M2', 'M1','M1'],  
    '商户2': ['S1', 'S2', 'S1', 'S2', 'S1','S1'],  
    '金额': [100, 200, 300, 400, 500,500]  
}  
    
df = pd.DataFrame(data)  
    
print(df)

 
  交易号  卡号 商户1 商户2   金额
0  T1     C1    M1   S1   100
1  T2     C1    M1   S2   200
2  T3     C2    M2   S1   300
3  T4     C2    M2   S2   400
4  T5     C3    M1   S1   500
5  T6     C3    M1   S1   500

 
# 首先,我们按'商户1'和'商户2'以及'卡号'进行分组  
grouped = df.groupby(['卡号', '商户1', '商户2'])  
    
# 接着,我们计算每个组的交易笔数('size')和交易金额的总和('金额'的'sum')  
# 注意:'size'是pandas分组对象的一个默认方法,用于计算每个组的行数  
result = grouped.agg({'交易号': 'size', '金额': 'sum'}).reset_index()  
    
# 如果需要,可以将'交易号'列的名称更改为'交易笔数'以使其更清晰  
result = result.rename(columns={'交易号': '交易笔数'})  
result

 
  卡号 商户1 商户2  交易笔数    金额
0  C1   M1    S1       1      100
1  C1   M1    S2       1      200
2  C2   M2    S1       1      300
3  C2   M2    S2       1      400
4  C3   M1    S1       2     1000

 


 

  

 


参考