iterrows从datafram生成额外的不需要的输出

2024-09-28 19:33:38 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面的代码中,我试图为数据帧的每一行获取'proid'值和'uim'值。我试图从“proid”值解析第一个和第二个值,并使用它们为每个记录创建一个新目录。例如,对于第一条记录,它将创建目录'/stuff/_-place/1/2',对于第二条记录,它将是'/stuff/_-place/2/2'。我遇到的问题是,它只是创建了从1到9的目录,即“/stuff/\u-place/1”到“/stuff/\u-place/9”,尽管这些数字中的许多并没有出现在数据帧中的记录中。有人知道问题是什么吗?我怎样才能实现我最初的目标

当我使用.iloc[0]测试数据帧中的第一条记录时,代码工作正常,如下面注释掉的代码。当我尝试像下面的例子那样使用ItError时,它开始生成额外的目录

How to iterate over rows in a DataFrame in Pandas?

Code:

# iterows through whole data frame
sampleDf=testDf

for index, row in sampleDf.iterrows():


    pid=row['proid'] #sampleDf['proid'].iloc[0]

    ImgUrl=row['uim'] #sampleDf['uim'].iloc[0]


    # file path where images stored
    basePath=‘/stuff/_place/‘

    # 1st digit
    dig1=str(pid)[0]

    # 2nd digit
    dig2=str(pid)[1]

    # checking if directory exists and making new directory if it doesn't
    directory=basePath+dig1+'/'+dig2

    if not os.path.exists(directory):
        os.makedirs(directory)


Data:

proid   uim
123 red
224 veg
456 fog 

Tags: 数据代码in目录if记录placepid
1条回答
网友
1楼 · 发布于 2024-09-28 19:33:38

有什么问题?我必须编辑代码,使其能够运行,并且可以正常工作。下一次,编写代码,这样就可以复制并通过它,然后运行它,而无需更改任何内容

下面的代码是根据您的代码改编的

import os
import numpy as np
import pandas as pd

# iterows through whole data frame
sampleDf= pd.DataFrame([[123, 'red'], [224, 'veg'], [456, 'fog']],columns=['proid', 'uim'])

for index, row in sampleDf.iterrows():


    pid=row['proid'] #sampleDf['proid'].iloc[0]

    ImgUrl=row['uim'] #sampleDf['uim'].iloc[0]


    # file path where images stored
    basePath="/stuff/_place/"

    # 1st digit
    dig1=str(pid)[0]

    # 2nd digit
    dig2=str(pid)[1]

    # checking if directory exists and making new directory if it doesn't
    directory=basePath+dig1+'/'+dig2

    if not os.path.exists(directory):
        os.makedirs(directory)

创建以下目录:

enter image description here

相关问题 更多 >