首先,我有一个名为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是该行的唯一网站。
注意:我在代码中添加了不必要的注释,只是为了使我的思路更加清晰,因为我是菜鸟,并且显然做了一些很明显的事情。
答案 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))
您不需要执行任何循环。只需将文件加载到数据框中,然后添加这些步骤即可。
我认为这就是您要处理的循环。