统计相同卡号下最大交易号 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 |
|
|