Создание новых каталогов путем итерации по указанным значениям фрейма данных Python Pandas Numpy - PullRequest
1 голос
/ 08 марта 2019

Я пытаюсь создать папки, читая каждую строку из определенных столбцов в кадре данных:

import numpy as np
import pandas as pd
import os

raw_df = pd.read_excel('C:/Users/home/Desktop/test/Inventory.xls')
df = raw_df[["Barcode", "Brand", "product_name"]]

raw_df: снимок

df: снимок

Мой текущий рабочий каталог: C: \ Users \ home \ Desktop \ test \

path = os.getcwd()
new_path = os.chdir(path + "\\products\\")

print ("The new working directory is %s" % os.getcwd())

Новый рабочий каталог - C:\ Users \ home \ Desktop \ test \ products \

for i in range(len(df)):
    row = df.iloc[i]
    barcode = row["Barcode"]
    brand = row["Brand"]
    product_name = row["Product_Name"]
    if(("\\" + barcode + "\\__" + brand + "\\__" + product_name + "\\") == False):
        os.makedir("\\" + barcode + "\\__" + brand + "\\__" + product_name + "\\")
    else:
        print("failed")

Мой вывод:

Сбой Сбой Сбой Сбой Сбой

У меня более 400 строк в raw df, я только что тестировал его для первых 6 строк.

Я пытаюсь добиться следующего: Снимок конечного результата

, поэтому я пытаюсь взять каждую строку и использовать их для создания нового каталога, разделенного двойным подчеркиванием "__".

Дополнительное примечание: я удалил папки из рабочего каталога (те, которые я создалсам) и запустил код выше и до сих пор не достигли результатов, которые я был после.

Я бы создал сценарий bash, bно это не вариант, так как мне нужно будет заполнять эти папки различными данными, такими как изображения и т. д., когда я перебираю фрейм данных.

любая помощь будет принята с благодарностью.Я буду продолжать работать над этим и сообщу о решении для всех, если я смогу взломать это.

Большое спасибо,

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

@ vercelli, Спасибо за вашу помощь и указание мне в правильном направлении, мне удалось заставить работать следующий код:

for i in range(len(df)):
    row = df.iloc[i]
    barcode = row["Barcode"]
    brand = row["Brand"]
    product_name = row["Product_Name"]

    mypath = os.getcwd() + "\\" + barcode + "__" + brand + "__" + product_name + "\\"

    if(os.path.isdir(path) == False):
        os.mkdir(path)
    else:
        print("failed")

, как упомянуто @vercelli, убедитесь, что ваш фрейм данных делаетне содержит значений в своем поле:

/: *? "<> |

, так как это недопустимые символы для создания каталогов, я не слишкомзнакомы с другими системами, но Windows, безусловно, не принимает эти символы для создания каталогов с этими значениями.

0 голосов
/ 08 марта 2019

Попробуйте это с os.path.join и os.path.isdir:

for i in range(len(df)):
    row = df.iloc[i]
    barcode = row["Barcode"]
    brand = row["Brand"]
    product_name = row["Product_Name"]
    mypath = os.path.join(new_path, barcode, "__" + brand, "__" + product_name)
    if (os.path.isdir(mypath)):
        print("failed")
    else:
        os.mkdir(mypath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...