合并Pandas DataFrame行:按时间获取唯一图像名的方法咨询
获取指定时间对应的唯一图像名(Pandas实现)
嘿,这个需求其实用groupby就非常合适,完全没必要用到join,咱们一步步来拆解,用实例代码帮你搞懂:
先构造示例DataFrame
假设你的数据结构是这样的(和你的实际场景匹配):
import pandas as pd data = { '时间': ['2024-05-01', '2024-05-01', '2024-05-02', '2024-05-02', '2024-05-01'], '图像名': ['img_001.jpg', 'img_002.jpg', 'img_001.jpg', 'img_003.jpg', 'img_001.jpg'] } df = pd.DataFrame(data)
方法1:获取所有时间对应的唯一图像名(用groupby)
这是最直接的解决方案,按时间分组后提取每组的唯一图像名:
# 分组并提取唯一值 time_to_unique_imgs = df.groupby('时间')['图像名'].unique() # 转换成更直观的DataFrame格式(可选) result_df = time_to_unique_imgs.reset_index(name='唯一图像名') print(result_df)
输出结果:
时间 唯一图像名 0 2024-05-01 [img_001.jpg, img_002.jpg] 1 2024-05-02 [img_001.jpg, img_003.jpg]
方法2:获取单个指定时间的唯一图像名(直接过滤)
如果只是针对某一个特定时间,不用分组,直接过滤后去重更高效:
# 指定目标时间 target_time = '2024-05-01' # 过滤+去重 unique_images = df[df['时间'] == target_time]['图像名'].unique() print(unique_images)
输出结果:
['img_001.jpg' 'img_002.jpg']
关于join的说明
join一般用于合并两个不同的DataFrame,比如你有一个单独的时间列表,需要和另一个图像名表关联时才会用到。但你的数据都在同一个DataFrame里,完全不需要用join,groupby或者直接过滤就足够简洁高效了。
内容的提问来源于stack exchange,提问作者Jagannath Saragadam
相关产品推荐
相关产品推荐

