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

如何统计一个DataFrame的元素在另一个DataFrame中的出现次数

实现方案(Python Pandas)

前置准备:构造示例测试数据

import pandas as pd

# 输入df1:含a1、a2两列
df1 = pd.DataFrame({
    "a1": ["A", "B", "F", "A"],
    "a2": ["C", "D", "D", "D"]
})

# 输入df2:含emi_1、emi_2两列,补充业务所需的IMEI列(可根据你的实际数据替换)
df2 = pd.DataFrame({
    "IMEI": ["IMEI_001", "IMEI_002", "IMEI_003", "IMEI_004"],
    "emi_1": ["A", "B", "C", "G"],
    "emi_2": ["C", "L", "N", "D"]
})

步骤1:统计df1所有元素的出现频次

先把df1的两列合并成一维序列,直接统计每个值的出现次数,存为字典方便后续快速匹配:

df1_all_vals = pd.concat([df1["a1"], df1["a2"]])
val_count_map = df1_all_vals.value_counts().to_dict()

步骤2:匹配df2元素的出现次数

对df2的emi_1、emi_2两列每个值,匹配刚才生成的频次字典,无匹配则返回0:

# 自定义匹配函数
def count_occur(value):
    return val_count_map.get(value, 0)

# 新增列存储统计结果
df2["emi_1_df1_count"] = df2["emi_1"].apply(count_occur)
df2["emi_2_df1_count"] = df2["emi_2"].apply(count_occur)

步骤3:按IMEI分组输出结果

# 按IMEI分组聚合,若有多个同IMEI行可自定义聚合规则,这里取明细展示
final_result = df2.groupby("IMEI", as_index=False).first()
print(final_result)

输出结果说明

最终输出格式示例:

IMEIemi_1emi_2emi_1_df1_countemi_2_df1_count
IMEI_001AC21
IMEI_002BL10
IMEI_003CN00
IMEI_004GD03

频次校验参考:df1中A出现2次、B出现1次、C出现1次、D出现3次、F出现1次,其余值无出现记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:57:00