如何用Pandas检查CSV的Country_code与Snowflake表Code的匹配并生成标记
实现CSV中Country_code与Snowflake表Code的匹配校验
假设你已经成功将CSV数据读取为csv_df,Snowflake表数据读取为snowflake_df,可以按以下步骤快速实现匹配校验:
步骤说明
- 提取有效Code集合:从Snowflake的DataFrame中提取所有唯一的
Code值,存为集合(集合的查询效率远高于列表,数据量大时优势更明显) - 添加匹配标记列:利用Pandas的
isin()方法,判断CSV中每一行的Country_code是否存在于有效Code集合中,生成布尔值标记列
代码实现
# 提取Snowflake表中所有唯一的Code,转为集合 valid_codes = set(snowflake_df['Code'].unique()) # 给CSV数据新增匹配结果列 csv_df['Is_Matched'] = csv_df['Country_code'].isin(valid_codes)
结果示例
执行后你的csv_df会新增Is_Matched列,结果如下:
| Country_code | Country | Is_Matched |
|---|---|---|
| U123_CA | USA | True |
| C123_TR | Canada | True |
| I123_MU | India | False |
| E123_EU | Europe | False |
额外处理建议
如果你的数据存在前后空格或者需要不区分大小写匹配,可以先做数据清洗:
# 处理前后空格 snowflake_df['Code'] = snowflake_df['Code'].str.strip() csv_df['Country_code'] = csv_df['Country_code'].str.strip() # 不区分大小写匹配(转成统一小写) valid_codes = set(snowflake_df['Code'].str.lower()) csv_df['Is_Matched'] = csv_df['Country_code'].str.lower().isin(valid_codes)
内容的提问来源于stack exchange,提问作者Nathon
相关产品推荐
相关产品推荐

