如何根据字符串合并具有不同长度的两个数据帧包含

我正在从事医学成像中的数据增强工作。我在 Pandas 数据框中有 100 个带有标签(0 和 1)的原始图像名称。我添加了新图像和它们的名称,并带有一些后缀。


我的原始图像具有以下名称:Image1、Image2、Image3、Image4,而我的增强数据具有以下名称:Image1_1、Image1_2、Image2_1、Image2_2、Image3_1、Image3_2、Image4_1、Image4_2 等。


我的 Pandas DataFrame 包含两列注释:文件名和标签。


我的另一个 Pandas Dataframe 仅包含原始文件名和没有标签的增强文件名。


filename = [f for f in os.listdir(path_to_dir_with_augmented_images)]

annotations = pd.read_csv("annotations.csv", names=["filename", "label"])


filenames = []

for file in filename:

    filenames.append(file)


data = pd.DataFrame(filenames, columns=["filename"]

我的注释文件有 100 个长度,数据文件有 1000 以上。


我想要输出,例如:


filename, label

Image1, 0

Image1aa1, 0

Image1aa2, 0

Image2, 1

Image2baa1, 1

Image2baasa2, 1

如何在熊猫中做到这一点?


皈依舞
浏览 94回答 1
1回答

有只小跳蛙

import pandas as pd#create dummy datadata = pd.DataFrame([['Image1aa1'], ['Image1aa2'], ['Image2baa1'], ['Image2baasa2']], columns=['filename'])annotations = pd.DataFrame([['Image1',1],['Image2',0]], columns=['filename','label'])for name, l in zip(annotations.filename,annotations.label):    temp = data[data['filename'].str.match(name)]    temp['label'] = l    annotations = annotations.append(temp)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python