Pandas如何实现列A每个值对应列B唯一且重复时同步匹配
你提到的DataFrame结构如下:
实现方案
你要的效果本质是为列A的每一个唯一值绑定固定的列B映射,即便A重复出现也用同一个映射值,用Pandas的map方法就能快速实现,具体步骤如下:
- 先提取列A和列B的唯一对应关系,生成映射字典
- 用映射字典匹配列A的所有值,生成目标
Value列
完整代码示例
import pandas as pd # 替换为你自己的原DataFrame df = pd.read_csv("your_data.csv") # 构建A到B的唯一映射,默认取每个A值第一次出现对应的B值 a_to_b = df.drop_duplicates(subset="A").set_index("A")["B"].to_dict() # 生成Value列 df["Value"] = df["A"].map(a_to_b)
效果验证
我们用模拟数据测试运行效果:
# 模拟测试数据 test_df = pd.DataFrame({ "A": ["苹果", "香蕉", "苹果", "橙子", "香蕉", "苹果"], "B": [5, 3, 99, 4, 88, 77] }) a_to_b = test_df.drop_duplicates("A").set_index("A")["B"].to_dict() test_df["Value"] = test_df["A"].map(a_to_b) print(test_df)
输出结果:
A B Value 0 苹果 5 5 1 香蕉 3 3 2 苹果 99 5 3 橙子 4 4 4 香蕉 88 3 5 苹果 77 5
可以看到所有重复的A值对应的Value完全一致,符合需求。如果同一个A对应多个B值时你不想取第一个出现的B值,也可以手动构造a_to_b字典指定对应关系即可。
内容的提问来源于stack exchange,提问作者Vivek Shukla
相关产品推荐
相关产品推荐

