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

Python中如何筛选匹配另一数据框IDBANK列的行?

Pandas筛选匹配另一DataFrame中IDBANK的行

已知DataFrame结构

df_idbank的列类型:

>>> df_idbank.dtypes

DATASET                   object
IDBANK                    object
KEY                       object
FREQ                      object
INDICATEUR                object
CORRECTION_label_en       object

df_INDICATORS的结构:

>>> df_INDICATORS
    Label                                               IDBANK
0   Summary indicator of overall economic situatio...   1586891
1   Business climate summary indicator - SA series      1586890
2   Trend of expected activity - Overall - SA series    1586916
3   Trend of expected activity - Building structur...   1586885
4   Trend of expected activity - Finishings - SA s...   1586886

单ID筛选示例:

已知筛选IDBANK为"001586891"的行代码:

df_idbank = df_idbank.loc[(df_idbank.FREQ == "M") & (df_idbank.CORRECTION_label_en == "Seasonal adjusted") & (df_idbank.IDBANK =="001586891") ]

批量匹配df_INDICATORS中IDBANK的筛选方法

注意两个DataFrame的IDBANK格式差异:df_idbank中是带前导零的字符串(如"001586891"),df_INDICATORS中是整数(如1586891),需先统一格式再批量匹配。

具体代码:

  1. 先将df_INDICATORS的IDBANK转换为和df_idbank一致的7位带前导零字符串:
target_ids = df_INDICATORS['IDBANK'].apply(lambda x: f"{x:07d}")
  1. 结合原有筛选条件,用isin()实现批量匹配:
df_idbank_filtered = df_idbank.loc[
    (df_idbank.FREQ == "M") & 
    (df_idbank.CORRECTION_label_en == "Seasonal adjusted") & 
    (df_idbank.IDBANK.isin(target_ids))
]

格式兼容补充:

如果不确定格式是否统一,可强制将两边IDBANK都转为标准字符串格式,避免类型不匹配:

# 统一转换为7位带前导零的字符串
df_idbank['IDBANK'] = df_idbank['IDBANK'].astype(str).str.zfill(7)
target_ids = df_INDICATORS['IDBANK'].astype(str).str.zfill(7)

内容的提问来源于stack exchange,提问作者prashanth manohar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:10:02