You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Pandas数据框添加付款人对收款人历史交易次数列?

解决方案

针对你的需求,核心是按**付款人(Payer)+收款人(Payee)**的组合分组,统计每组内当前行之前的交易次数,用cumcount()就能高效实现,完全适配200万行的大数据量场景。

正确代码

import pandas as pd

# 你的原始数据
df = pd.DataFrame([
    (1000, 'Frank', 'Hugo'),
    (100, 'Peter', 'Frank'),
    (10000, 'Hugo', 'James'),
    (300, 'James', 'Jennifer'),
    (250, 'Frank', 'Hugo'),
    (550, 'Peter', 'Frank'),
    (10000, 'Frank', 'Hugo')
], columns=['Amount', 'Payer', 'Payee'])

# 新增Previous_transactions列
df['Previous_transactions'] = df.groupby(['Payer', 'Payee']).cumcount()

print(df)

代码说明

  • groupby(['Payer', 'Payee']):将数据按「付款人-收款人」的唯一组合分组,确保只统计同一对用户之间的交易。
  • cumcount():对每个分组内的行从0开始逐行计数,这个数值恰好就是当前交易发生前,该付款人向同一收款人进行过的交易次数——比如分组内第一行是0(之前无交易),第二行是1(之前有1次),完全匹配你的输出要求。

为什么你之前的代码无效?

你用的df['Payee'].groupby(df['Payer']).value_counts()是统计每个付款人下,各收款人的总交易次数,返回的是每个(Payer, Payee)组合的汇总结果(比如Frank→Hugo的总次数是3),不是逐行的计数,所以结果长度和原DataFrame不匹配,无法直接赋值为新列。

内容的提问来源于stack exchange,提问作者MLonzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:10:37