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

Python实现循环内呼叫号码的被叫号码交集查询

找出指定主叫号码对应的被叫号码交集

我来帮你搞定这个问题——要从大量通话记录里找出特定主叫号码对应的被叫号码交集,用Pandas就能轻松实现,我结合你的示例给你一步步说明:

步骤1:准备数据与导入库

首先确保你已经导入Pandas,然后可以先把示例数据转换成DataFrame(实际使用时直接读取你的数据源即可):

import pandas as pd

# 示例数据(替换成你的实际数据)
data = {
    'Calling Number': ['023456738', '064785993', '087594937', '087594937', '023456738', '087594937'],
    'Called Number': ['9123457583', '8804783937', '9123457583', '9278446356', '6547485959', '3547483946'],
    'Seconds': [55, 125, 34, 33, 45, 23]
}
df = pd.DataFrame(data)

步骤2:定义目标主叫号码

把你需要查询交集的主叫号码列出来,比如示例里的两个号码:

target_callers = ['023456738', '087594937']

步骤3:计算被叫号码交集

这里有两种简洁的实现方式,都能高效处理数千条数据:

方式一:循环遍历目标主叫(直观易懂)

# 为每个目标主叫提取唯一的被叫号码集合
called_sets = {}
for caller in target_callers:
    # 筛选当前主叫的所有被叫号码,去重后转成集合
    called_numbers = df[df['Calling Number'] == caller]['Called Number'].unique()
    called_sets[caller] = set(called_numbers)

# 计算所有集合的交集
common_called = set.intersection(*called_sets.values())

print("共同被叫号码:", common_called)
# 输出:共同被叫号码: {'9123457583'}

方式二:用GroupBy优化(更简洁高效)

如果你的数据量很大,用GroupBy分组的方式会更高效:

# 按主叫号码分组,把每个主叫对应的被叫号码转成集合
caller_called_sets = df.groupby('Calling Number')['Called Number'].apply(set)

# 筛选目标主叫的集合,直接求交集
common_called = set.intersection(*caller_called_sets.loc[target_callers])

print("共同被叫号码:", common_called)

关键注意事项

  • 保留号码前导零:如果你的号码包含前导零(比如示例里的023456738),读取数据时一定要指定字符串类型,避免前导零丢失:
    # 读取CSV时指定号码列的类型为字符串
    df = pd.read_csv('your_call_data.csv', dtype={'Calling Number': str, 'Called Number': str})
    
  • 处理重复数据:代码里用了unique()或集合自动去重,确保每个被叫号码只计算一次,不影响交集结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:31:43