Python 通过遍历指定的数据帧值来创建新目录

Python 通过遍历指定的数据帧值来创建新目录,python,pandas,numpy,dataframe,operating-system,Python,Pandas,Numpy,Dataframe,Operating System,我试图通过读取数据框中特定列的每一行来创建文件夹: 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"]] 原始df: df: 我当前的工作目录:C:\Users\home\Desktop\test\ 新的工作目录是C:

我试图通过读取数据框中特定列的每一行来创建文件夹:

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"]]
原始df:

df:

我当前的工作目录:C:\Users\home\Desktop\test\

新的工作目录是C:\Users\home\Desktop\test\products\

我的输出:

失败 失败 失败 失败 失败 失败

我有超过400行的原始df,我只是在测试它的前6行

我努力实现的目标如下:

因此,我尝试获取每一行,并使用它们创建一个新目录,用双下划线“\uuuu”分隔

附加说明:我已经从工作目录(我自己创建的文件夹)中删除了这些文件夹,并运行了上面的代码,但仍然没有得到我想要的结果

我本来会创建一个bash脚本,但这不是一个选项,因为在遍历dataframe时,我需要用各种数据(如图像等)填充这些文件夹

任何帮助都将不胜感激。如果我能够破解这个问题,我会继续努力,并为每个人提供一个解决方案


非常感谢,

尝试使用
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)

使用
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)

@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肯定不接受这些字符来创建具有这些值的目录。

@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肯定不接受这些字符来创建具有这些值的目录。

如果((“\\”+条形码+“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。这不是一种检查目录existsTry
os.path.exists(path)
os.path.isdir(path)
if((“\\\”+barcode+“\\\\\\\\\\\\\\\\\\\\\\\\\\\\”+品牌+“\\\\\\\\\\\\\\\\\\”+产品名称+“\\”==False)是否存在的方法。
将字符串与False进行比较。这不是一种检查目录existsTry
os.path.exists(path)
os.path.isdir(path)
@JameBlonde尝试打印品牌的方法,可能是empty@JameBlonde试试印刷品牌,它可能是空的