如何将函数应用于熊猫数据框中一列的每一行?

问题描述 投票:1回答:3

我有一个价格区间为〜600k的数据框df,我是从here下载的。

enter image description here

我将最后一列的名称从'Name'重命名为'ticks',并创建了一个新的空白列'Name':

df = df.rename(columns={'Name': 'Ticker'})
df['Name'] = ''

我编写了以下函数来返回给定股票代码的公司名称:

! pip3 install yfinance
import yfinance as yf

def return_company_name(ticker):
    return yf.Ticker(ticker).info['longName']

return_company_name('MSFT')
>>> 'Microsoft Corporation'

现在,我要用相应的股票代号的公司名称填充“名称”列。为此,我编写了以下lambda函数:

df.Name = df.Ticker.apply(lambda x: return_company_name(x))

但是这最后一行代码继续运行。有什么问题吗?如果是,该如何解决?

我尝试用map代替apply,但结果相同。

python pandas function dataframe apply
3个回答
0
投票

从yfinance查看来源,您会看到hereget_info方法调用_get_fundamentals,这反过来似乎对不同站点做了一些[API]调用,以获取所需的信息。 由于对每一行都执行此操作,因此您会遇到一些麻烦,因为网站可能会限制您的访问速度。也许您可以迈出第一步,获取所有唯一名称,然后查找一次,然后将其保存在某种形式的CSV或类似格式的查询中


0
投票
您可以使用_get_fundamentals将功能应用于数据框中的每一行/列。

0
投票
首先,您不需要modDfObj = dfObj.apply(lambda x: np.square(x) if x.name == 'z' else x)lambda
© www.soinside.com 2019 - 2024. All rights reserved.