繁体   English   中英

如何使用 function 返回值更新多个 dataframe 列单元格

[英]How to update multiple dataframe column cells using function return values

我在这里的上一个问题中有一个后续问题如何使用 function 返回值更新 dataframe 单元格

我有以下 dataframe 称为 df1,

    country ticker price  exchange dateupdated
0   US      MSFT   105.32 Nasdaq   05-May-2019
1   US      AAPL
2   GERMANY NSU.DE 10.42  XETRA    06-May-2019
3   SG      D05.SI
4   AUS     WOW.AX

我有一个名为 data_get 的 function,看起来像这样。 它从股票代码列中获取股票代码,例如“MSFT”,并返回一个列表。

def data_get(ticker):
   listofdata = somefunction
   return listofdata 

listofdata  = data_get('AAPL')

listofdata 是包含 price、exchange 和 dateupdated 的字符串列表。

listofdata = ['150.22', 'Nasdaq', '05-May-2020']

function 必须到 go 在线查找数据,因此每次运行需要几秒钟。

我只想在没有价格的单元格上使用这个 function,(价格单元格是空的)。

因此,function 将仅用于此 dataframe 的第 1、3 和 4 行,并更新其中的价格、交换和日期更新值,使其看起来像这样。

    country ticker price  exchange dateupdated
0   US      MSFT   105.32 Nasdaq   05-May-2019
1   US      AAPL   150.22 Nasdaq   05-May-2020
2   GERMANY NSU.DE 10.42  XETRA    06-May-2019
3   SG      D05.SI 23.44  SGX      04-May-2020
4   AUS     WOW.AX 12.33  ASX      04-May-2020

总而言之,我该怎么做;

  1. 仅将 data_get function 应用于价格为空的行(1、3、4),

  2. 使用股票代码列字符串 (AAPL, D05.SI, WOW.AX) 作为 data_get function 的输入,

  3. 使用来自 data_get function 的列表 output 并更新价格、交换和日期更新列?

如果我可以将字符串转换为价格列的浮点数和 dateupdated 列的日期,那也是一个好处。

在值为nan的地方进行apply

df.loc[df.prices.isnull(), ['price','exchange','dateupdated']] =
    df.loc[df.prices.isnull(), 'ticker'].apply(data_get)

返回类型:列表直接添加到各个列

我是这样做的,记住你要返回一个列表,所以要单独修改更新数据点,

df.loc[df.Price].isnull(),['Price','Exchange','Update_date']] = pd.DataFrame(df.loc[df.Price.isnull(),'Ticker'].apply(data_get).to_dict()).transpose().rename(columns={0:'Price',1:'Exchange',2:'Update_date'})

此单行将直接采用 dataframe 并根据您的函数的返回类型,将列表元素添加到 dataframe 中的相应列

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM