【问题标题】:How do I use a loop to populate a dataframe?如何使用循环来填充数据框?
【发布时间】:2022-05-04 05:58:32
【问题描述】:

我正在尝试将股票列表的当前价格数据提取到熊猫数据框中。我正在尝试使用循环将数据拉入数据框中,其中行是列表项,列是当前价格。此循环不断将价格列中的所有值替换为列表中最后一只股票的当前价格 (JNJ 178.29)。我该如何解决?

Input: 

Target_Equities_List = ["MSFT",
                        "K",
                        "JNJ"]
Target_Frame = pd.DataFrame(index=Target_Equities_List)

for ticker in Equities_List:
    yahoo_financials = YahooFinancials(ticker)
    json_obj_price = yahoo_financials.get_stock_price_data()
    current_price = json_obj_price[ticker]['regularMarketPrice']
    Target_Frame["Price"] = current_price
Output:

      Price
MSFT  178.29
K     178.29
JNJ   178.29

谢谢你们!

【问题讨论】:

    标签: python dataframe loops yahoo-finance


    【解决方案1】:

    因为您在代码的最后一位中定位列名而不是索引。您还应该在开头声明“价格”列。如下所示:

    import pandas as pd
    
    Target_Equities_List = ["MSFT",
                        "K",
                        "JNJ"]
    
    prices = {'prices': [0,0,0]}
    Target_Frame = pd.DataFrame(index=Target_Equities_List, data=prices)
    print(Target_Frame)
    

    输出:

          prices
    MSFT       0
    K          0
    JNJ        0
    
    Process finished with exit code 0
    

    然后使用 loc 函数更改特定的代码目标:

    Target_Frame.loc[[ticker]] = 12345
    

    如果您的代码格式与您拥有的列表中的格式完全相同,那应该可以工作:这是一个我手动覆盖它的示例:

    Target_Frame.loc[['MSFT']] = 56.7
    

    输出:

          prices
    MSFT    56.7
    K        0.0
    JNJ      0.0
    
    Process finished with exit code 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      相关资源
      最近更新 更多