如何通过for循环将值附加到数据框中列的行?

时间:2020-10-03 01:29:10

标签: python pandas

首先,我有一个名为GetWebsite(id)的函数。它采用一个参数,即ID号。该功能不是问题,它会为我返回一个网址。我遇到的问题是,进入该网站后,无法将其写入数据框中的新列。

我使用的数据是100列左右的公司信息。我已经试了又试,找啊找,我刚刚失去了在这一点上。

代码如下:

df = pd.read_csv('10_records.csv')
df['WebsiteURL'] = ''

for position, i in enumerate(df.Id):
    #GET THE JSON AND PROCESS THE RESPONSE
    print(f'Currently getting the JSON for {i}.')
    ID = GetWebsite(i)
    if not ID:
        print(f'No Domain Found for {i}')
    else:
        #APPEND THE FILE TO THE CSV AFTER ADDING IT TO THE DATAFRAME
        print(f'Appending the website ({ID}) to the file.')
        df.insert(position,'WebsiteURL',ID)


        #MOVE ON TO THE NEXT FILE AFTER A RANDOM SLEEP 
        print('Done. Moving on to the next record in a moment.')
        sleep(random.randint(0, 10))

#SEND EVERYTHING TO CSV FILE NOW
df.to_csv("output.csv", index=False)
print('Project successfully exported to CSV.')

我想在这里做的是在for循环之前,我正在将新列添加到数据帧中,每行的空白值都是

然后在循环中,我调用GetWebsite函数,并返回域。符合预期。

我现在要做的是将该域添加到行中,然后继续进行下一个操作。最后,当循环结束时,我想将数据帧导出到csv。

这是我的最新尝试,很明显我错误地使用了Pandas,并尝试枚举然后使用df.insert将其导入。我也尝试了df.at()和其他几种方法。我现在就丢了。

编辑:这就是我要的...

Output Example:
   RCount  PCount  ...  Email_1                    WebsiteURL
0         1436          0  ...                 NaN  www.eachcompanieswebsite.com
1         1436          0  ...                 NaN  www.eachcompanieswebsite.com
2         1436          0  ...                 NaN  www.eachcompanieswebsite.com
3         1436          0  ...                 NaN  www.eachcompanieswebsite.com
4         1436          0  ...                 NaN  www.eachcompanieswebsite.com
5         1436          0  ...                 NaN  www.eachcompanieswebsite.com
6         1436          0  ...                 NaN  www.eachcompanieswebsite.com
7         1436          0  ...                 NaN  www.eachcompanieswebsite.com
8         1436          0  ...                 NaN  www.eachcompanieswebsite.com
9         1436          0  ...                 NaN  www.eachcompanieswebsite.com

其中eachcompanieswebsite.com是该行的唯一网站。

注意:我在代码中添加了不必要的注释,只是为了使我的思路更加清晰,因为我是菜鸟,并且显然做了一些很明显的事情。

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情吗?

def website(i):
    ID = GetWebsite(i)
    return ID if ID else 'No website found'

df['WebsiteURL'] = df['Id'].apply(lambda x: website(x))

您不需要执行任何循环。只需将文件加载到数据框中,然后添加这些步骤即可。

我认为这就是您要处理的循环。