如何在Pandas中筛选df2指定列并跳过不存在的列
解决Pandas筛选列时跳过不存在列的问题
直接两步就能搞定:
- 先提取目标ID列表,过滤掉df2中不存在的ID
- 用过滤后的有效ID提取df2的对应列
具体代码实现:
首先获取法国公司的ID列表:
fr_ids = df1.query("Pays=='FR'")['ID_Societe'].tolist()
然后筛选出df2中实际存在的ID(小数据量用列表推导即可):
valid_ids = [id for id in fr_ids if id in df2.columns]
如果数据量较大,用集合交集的方式效率更高:
valid_ids = list(set(fr_ids) & set(df2.columns))
最后用有效ID提取df2的列:
df2_filtered = df2[valid_ids]
嫌步骤多也可以写成一行:
df2_filtered = df2[[id for id in df1.query("Pays=='FR'")['ID_Societe'] if id in df2.columns]]
这样就只会保留df2中存在的列,不会触发KeyError了。
内容的提问来源于stack exchange,提问作者Jacques
相关产品推荐
相关产品推荐

