如何循环遍历DataFrame中的唯一ClientID以获取对应邮箱地址
如何循环遍历DataFrame中的唯一ClientID以获取对应邮箱地址
嘿,我来帮你搞定这个需求!先给你指出现有代码里的两个小问题:一是变量名不能有空格(customer account得改成customer_account),二是读取Excel文件时文件名要加引号,不然会被当成变量处理。
下面给你两种实用的解决方案,你可以根据自己的场景选择:
方法一:循环遍历唯一ID,用loc查询对应邮箱
这种方法直观易懂,适合数据量不大的场景:
import pandas as pd # 修正后的基础代码 file = pd.read_excel('customers.xlsx') customer_account = file['ClientID'].unique().astype(str) # 循环遍历每个唯一ClientID获取邮箱 for client_id in customer_account: # 筛选出对应ClientID的行,提取email列的第一个值(因为ID唯一,只会有一个结果) email = file.loc[file['ClientID'] == client_id, 'email'].iloc[0] print(f"ClientID: {client_id}, 对应邮箱: {email}")
这里用loc精准定位到目标行,再通过iloc[0]取出邮箱值——因为你已经确保了ClientID是唯一的,所以不用担心有多个结果的问题。
方法二:先构建映射字典,再循环取值(更高效)
如果你的数据量比较大,推荐用这种方法,因为字典查询的速度比每次遍历DataFrame快很多:
import pandas as pd file = pd.read_excel('customers.xlsx') customer_account = file['ClientID'].unique().astype(str) # 先把ClientID和email转成键值对字典 client_email_dict = file.set_index('ClientID')['email'].to_dict() # 遍历唯一ID直接从字典取邮箱 for client_id in customer_account: # 用get方法可以设置默认值,避免ID不存在时报错 email = client_email_dict.get(client_id, '未找到对应邮箱') print(f"ClientID: {client_id}, 对应邮箱: {email}")
这种方法先把数据预处理成字典,后续循环只需要查字典就行,效率提升很明显。
另外补充一句:如果你的ClientID本身就是字符串类型,那astype(str)可以省略,根据你的实际数据类型调整就好~
备注:内容来源于stack exchange,提问作者Madhav Rao
相关产品推荐
相关产品推荐

