我有一个简单的数据帧。它基本上看起来像这样 - 只是更大。
import pandas as pd
csv = [{"name" : "Peters Company", "Apples" : 1}, {"name" : "Quagmires Company", "Apples" : 0}]
df = pd.DataFrame(csv)
我尝试应用我写入名称列的一个小函数。这是我的工作:
from google import search
def get_url(query):
url = search(query, tld='com', num=1, stop=0, pause=10)
print(next(url))
我正在使用谷歌搜索某个query
并将其打印出来。
我正在尝试创建一个新列url
,其中包含get_url
行的结果。
这是我做的:
for i in df.name:
get_url(i)
显然,这只会导致url
逐个打印。但我试图扩充数据帧。我试过itterows
和df.loc
,但到目前为止还没有成功。有任何想法吗?谢谢/ R
答案 0 :(得分:2)
您可以使用apply
:
df['url'] = df['name'].apply(get_url)
或assign
:
df = df.assign(url=df['name'].apply(get_url))
或列表理解:
df['url'] = [get_url(x) for x in df['name']]
答案 1 :(得分:1)
apply方法正是您想要的。您需要做的就是为函数添加一个返回值:
def get_url(query):
url = search(query, tld='com', num=1, stop=0, pause=10)
return next(url)
df['url'] = df['name'].apply(get_url)
如果除了名称单元格之外还想传递其他参数,可以使用lambda:
def get_url(query, another_param):
url = search(query, tld='com', num=1, stop=0, pause=10)
return next(url)
df['url'] = df['name'].apply(lambda column_name: get_url(column_name, another_value))