Читайте из двух разных каталогов в информационном фрейме pandas при создании отношений - PullRequest
0 голосов
/ 26 июня 2019

У меня есть две директории. Один содержит изображения, а другой содержит маски. Каждое изображение в папке с изображениями имеет маску с тем же именем в папке с масками. Теперь я хочу создать pandas dataframe с одним столбцом со списком расположений изображений и вторым столбцом, содержащим соответствующее расположение масок. Чтобы провести предварительное расследование о том, как это сделать, я написал следующий код:

# Generate a list of all the files and their
def generate_list(images, masks):

    images_df = pd.concat([pd.DataFrame([file],
                                        columns=['images']) for file in os.listdir(images)], ignore_index = True)
    masks_df = pd.concat([pd.DataFrame([file],
                                       columns=['masks']) for file in os.listdir(masks)], ignore_index = True)

    df = pd.concat([images_df, masks_df], axis=0, ignore_index=True)

    print(df)

    return df

Однако я получаю вывод:

       images     masks
0    47_1.bmp       NaN
1     5_1.bmp       NaN
2    26_1.bmp       NaN
3    24_1.bmp       NaN
4     7_1.bmp       NaN
5    19_1.bmp       NaN
6      19.bmp       NaN
7      18.bmp       NaN
8    45_1.bmp       NaN 
26    4_1.bmp       NaN
..        ...       ...
131       NaN    14.bmp
132       NaN  50_1.bmp
133       NaN  15_1.bmp
134       NaN  28_1.bmp
135       NaN   9_1.bmp
136       NaN    16.bmp
137       NaN  17_1.bmp
138       NaN    17.bmp
139       NaN  33_1.bmp

Очевидно, что os.listdir уже перемешивает список файлов, принимаемых в операцию concat.

Как бы я поступил так?

1 Ответ

0 голосов
/ 26 июня 2019
def generate_list(images, masks):

    images_df = pd.concat([pd.DataFrame([images + file]) for file in os.listdir(images)], ignore_index=True)
    masks_df = pd.concat([pd.DataFrame([masks + file]) for file in os.listdir(masks)], ignore_index=True)

    df = pd.concat([images_df, masks_df], axis=1, ignore_index=True)

    return df.sample(frac=1)

Вот мой новый ответ. Ось была неправильная!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...