如何在DataFrame的Product列存在NaN时获取对应Commodity的唯一值列表
获取缺失Product值对应的Commodity列表
问题背景
合并动态DataFrame与静态电子表格的DataFrame后,得到如下结果:
Counterparty DealType Commodity Product Aron Buy AAA NaN Aron Buy AAA NaN Aron Buy AAA NaN Aron Buy BBB prod1 Aron Buy BBB prod1 Aron Buy BBB prod1 Aron Buy CCC NaN Aron Buy CCC NaN Aron Buy CCC NaN
需求是:当Product列存在NaN值时,提取对应的唯一Commodity值列表(如['AAA', 'CCC']),用于提示更新电子表格补充缺失值;若无NaN则程序继续执行。现有代码仅能检测NaN存在,无法提取对应Commodity列表。
解决方案
通过布尔索引筛选出Product为NaN的行,再提取Commodity列的唯一值并转为列表即可实现需求:
完整代码示例
import sys import pandas as pd # 假设df是合并后的目标DataFrame if df['Product'].isnull().any(): # 筛选Product为空的行,提取唯一Commodity并转为列表 missing_commodities = df[df['Product'].isnull()]['Commodity'].unique().tolist() print(f'missing values found for commodities: {missing_commodities}') sys.exit(0) else: # 无缺失值时的后续执行逻辑 print('All product values are filled, proceeding...')
代码说明
df[df['Product'].isnull()]:精准筛选出所有Product列存在NaN的行['Commodity'].unique():提取这些行中Commodity的唯一值,避免重复项(如AAA多次出现仅保留一次).tolist():将numpy格式的唯一值数组转为Python列表,方便后续提示或处理
内容的提问来源于stack exchange,提问作者iBeMeltin
相关产品推荐
相关产品推荐

