[英]Apply function to each row of pandas dataframe to create two new columns
[英]Run a function for each row and create a new Column Pandas Dataframe
我正在使用 geoprapy 通过 URL 获取位置。 我的 DataFrame 有一个 URL 列。 我试图在每个 URL 上运行一个预先构建的 Geograpy 函数,并在 DataFrame 上创建一个新的位置列。 所以,我尝试过(来自其他问题):
hits['place'] = geograpy.get_place_context(url=hits.urls)
# and
hits['place'] = hits.apply(geograpy.get_place_context(url=hits.urls), axis=1))
# and
def getPlace(frame):
urls = frame['urls']
print(urls)
frame['place'] = geograpy.get_place_context(url=urls)
return frame
getPlace(hits)
与其他一些人一起。 我不断得到
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我的理解是它将 URL 视为整个列并且无法在该列上运行该函数? 真的无所谓。
如何为数据框中的每一行运行一个函数并创建一个新列?
我希望我的位置是一个“内存类型对象”,我可以稍后引用。 我有一部分可以通过以下方式工作:
for url in urls:
place = (geograpy.get_place_context(url=url))
region = place.country_regions
然而,在代码的后面,迭代导致它分崩离析。
pandas.apply 函数完全符合您的要求,只是您没有传递正确的参数。 你可以在文档中看到你需要传递一个函数,而不是函数调用的结果。
所以,只需通过 geograpy.get_place_context 来申请 -
hits['place'] = hits['urls'].apply(geograpy.get_place_context, axis=1)
您应该在urls
列上使用.apply()
,例如:
hits['place'] = hits['urls'].apply(geograpy.get_place_context, axis=1)
这个答案有助于找到不同矢量化方法及其用法之间的区别。 希望你也觉得它有用。
编辑:由于只有一列用于创建另一列, .apply()
该列上的.apply()
应该适合您。 .apply()
是在DataFrame
和Series
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.