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

如何用Pandas有条件地将GB行Col2值复制到对应FR行Col2

使用Pandas实现GB行Col2值复制到对应FR行Col2

我来帮你搞定这个需求!从你的示例能看出来,规则是按顺序将每个GB行的Col2值,对应复制到同顺序的FR行Col2中,下面是具体的Pandas实现步骤和代码:

首先,我们先还原你的示例输入数据:

import pandas as pd

# 构建示例输入的DataFrame
data = {
    'Country': ['GB', 'FR', 'GB', 'FR', 'GB', 'CN'],
    'Col1': [4, 2, 1, 7, 2, 3],
    'Col2': [5, 'x', 6, 'x', 8, 'x']
}
df = pd.DataFrame(data)

核心实现逻辑

我们需要先提取所有GB行的Col2值,再找到所有FR行的位置,按顺序把值对应过去:

# 提取所有GB行的Col2值,转成列表
gb_col2 = df[df['Country'] == 'GB']['Col2'].tolist()

# 获取所有FR行的索引
fr_rows = df[df['Country'] == 'FR'].index

# 按顺序给FR行的Col2赋值
df.loc[fr_rows, 'Col2'] = gb_col2

验证结果

运行完上面的代码后,打印DataFrame就能得到你要的预期输出:

Country  Col1 Col2
0      GB     4    5
1      FR     2    5
2      GB     1    6
3      FR     7    6
4      GB     2    8
5      CN     3    x

额外处理:GB和FR数量不匹配的情况

如果你的数据里GB和FR的数量不一致(比如FR比GB多,或者反过来),可以加个判断只匹配对应数量的行,避免报错:

# 取两者的最小数量,只赋值对应数量的行
match_count = min(len(gb_col2), len(fr_rows))
df.loc[fr_rows[:match_count], 'Col2'] = gb_col2[:match_count]

这样多出来的FR行(如果有的话)会保留原来的x,多出来的GB行则不会影响其他行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:20:03