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

如何比较不同形状Pandas DataFrame的depth列并匹配label?

匹配两个DataFrame的深度值并添加对应标签

这是个很常见的Pandas数据关联场景,针对你的需求,我提供两种简单高效的解决方案:

方法一:使用merge()函数合并(推荐)

因为你的DataFrame a 中depth1是唯一值,每个值对应唯一的label,而b中的depth2有重复项,用merge()可以轻松完成左连接(保留b的所有行),并把对应label匹配过来:

import pandas as pd
import numpy as np

# 初始化你的两个DataFrame
data = [[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],['a','b','c','d','e','f']]
data = np.matrix(data).T
a = pd.DataFrame(data, columns=['depth1', 'label'])
b = pd.DataFrame([0, 0.5, 0.5, 0.5, 0.5, 1.0, 1.5, 1.5, 1.5, 2.0, 2.0, 2.5], columns=['depth2'])

# 统一数据类型(解决np.matrix转换后depth1为字符串的问题)
a['depth1'] = a['depth1'].astype(float)
b['depth2'] = b['depth2'].astype(float)

# 执行左连接合并,匹配depth2和depth1
result = pd.merge(b, a, left_on='depth2', right_on='depth1', how='left')
# 移除多余的depth1列,只保留需要的列
result = result.drop(columns='depth1')

print(result)

运行后输出结果:

depth2 label
0      0.0     a
1      0.5     b
2      0.5     b
3      0.5     b
4      0.5     b
5      1.0     c
6      1.5     d
7      1.5     d
8      1.5     d
9      2.0     e
10     2.0     e
11     2.5     f

方法二:使用map()映射

先把a转换成{深度值: 标签}的字典,再用map()方法给b批量添加标签,适合不需要完整合并的场景:

import pandas as pd
import numpy as np

# 初始化DataFrame
data = [[0.0, 0.5, 1.0, 1.5, 2.0, 2.5],['a','b','c','d','e','f']]
data = np.matrix(data).T
a = pd.DataFrame(data, columns=['depth1', 'label'])
b = pd.DataFrame([0, 0.5, 0.5, 0.5, 0.5, 1.0, 1.5, 1.5, 1.5, 2.0, 2.0, 2.5], columns=['depth2'])

# 统一数据类型
a['depth1'] = a['depth1'].astype(float)
b['depth2'] = b['depth2'].astype(float)

# 创建深度到标签的映射字典
depth_label_map = a.set_index('depth1')['label'].to_dict()

# 给b添加label列
b['label'] = b['depth2'].map(depth_label_map)

print(b)

关键注意点

  • 一定要统一数据类型:因为你用np.matrix(data).T转换后,a中的depth1会变成字符串类型,而b的depth2是数值类型,直接匹配会失败,所以必须先转成相同类型(比如都转成float)。
  • 如果a中存在重复的depth1值,merge()会保留所有匹配结果,而map()只会取最后一个对应的标签,你可以根据实际需求选择方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:27:56