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

如何移除第二个DataFrame中el_batch列无匹配的大写字母后缀

处理DataFrame中el_batch列的后缀修正问题

问题背景

现有两个DataFrame:

第一个DataFrame(记为df1):

MD Uniformity TD Uniformity  el_batch
0      0.007474      0.021731    PC-322
1      0.009175      0.022445    PC-328
2      0.013531      0.022607  PC-332-A
3      0.007609      0.025613  PC-332-B
4      0.013437      0.019079    PC-333
5       0.01541           NaN    PC-336
6      0.017017      0.020861    PC-337
7      0.014641      0.020523  PC-339-B
8      0.009083       0.03093    PC-340
9      0.010896      0.014948    PC-341

第二个DataFrame(记为df2):

el_batch  fraction_load  quantity  fraction_max  fraction_min
0   PC-322-A         22.964        99        1400.5        1370.5
1   PC-322-A         23.501       852        1430.6        1400.6
2   PC-322-A         23.321       115        1410.5        1400.5
3   PC-322-A         23.501       114        1420.6        1410.6
4   PC-322-A         23.681        68        1430.7        1420.7
5     PC-328         24.037       527        1460.7        1430.7
6     PC-328         23.501       411        1430.6        1400.6
7   PC-332-A         24.037       178        1460.7        1430.7
8   PC-332-A         22.964        57        1400.5        1370.5
9   PC-332-A         23.501      1676        1430.6        1400.6
10  PC-332-A         22.964       157        1400.5        1370.5
11  PC-332-A         23.501       175        1430.6        1400.6
12  PC-332-A         23.501       981        1430.6        1400.6
13  PC-333-A         23.501      4186        1430.6        1400.6
14    PC-336         27.795       309        1671.4        1641.4
15    PC-336         27.258       194        1641.3        1611.3
16  PC-337-A         24.037        22        1460.7        1430.7
17  PC-337-A         24.574       142        1490.8        1460.8
18    PC-341         25.111       620        1520.9        1490.9
19    PC-344         24.037        57        1460.7        1430.7
20    PC-344         23.501       552        1430.6        1400.6
21  PC-339-B         24.037       240        1460.7        1430.7
22  PC-339-B         23.501       612        1430.6        1400.6
23    PC-340         22.964       463        1400.5        1370.5
24    PC-340         23.501       636        1430.6        1400.6

需求

对df2的el_batch列做如下处理:

  • 若某个带大写字母后缀(如PC-322-A)的值在df1的el_batch列中不存在,则移除该后缀,保留前缀部分(如PC-322);
  • 若该带后缀的值在df1中存在(如PC-332-A),则保持原样。

实现方法

直接按下面的步骤操作就能搞定:

  1. 先把df1里所有的el_batch值存成一个集合,这样查找效率更高:
valid_batches = set(df1['el_batch'])
  1. 写个小函数处理每个批次号:先判断原始值是否在df1的有效集合里,在的话直接返回;不在的话,要是最后是-大写字母的格式,就去掉后面的后缀,只保留前面的部分:
def fix_batch(batch):
    if batch in valid_batches:
        return batch
    # 从最后一个"-"分割,判断后面的部分是不是大写字母
    split_parts = batch.rsplit('-', 1)
    if len(split_parts) == 2 and split_parts[1].isupper():
        return split_parts[0]
    # 要是不符合后缀格式,就原样返回
    return batch
  1. 把这个函数应用到df2的el_batch列上:
df2['el_batch'] = df2['el_batch'].apply(fix_batch)

处理结果验证

处理后df2的el_batch列会按规则修正:

  • PC-322-A → PC-322(df1中无该值)
  • PC-332-A 保持不变(df1中存在该值)
  • PC-333-A → PC-333(df1中无该值)
  • PC-337-A → PC-337(df1中无该值)
  • 其他符合条件的值都会按规则调整

内容的提问来源于stack exchange,提问作者Omer Davidi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:05:05