【问题标题】:Multiple fields using Pandas and Quandl使用 Pandas 和 Quandl 的多个字段
【发布时间】:2019-04-13 20:57:06
【问题描述】:

我正在使用 Quandl 下载一组特定共同基金计划的每日资产净值价格。但是它返回一个数据对象而不是返回特定值

import quandl
import pandas as pd

quandl.ApiConfig.api_key = <Quandl Key>

list2 = [102505, 129221, 102142, 103197, 100614, 100474, 102913, 102921]

def get_nav(mf_code):
    df_main=pd.DataFrame()
    code=str(mf_code)
    df_main=quandl.get("AMFI/"+code,start_date='2019-04-05',end_date='2019-04- 05')
    return (df_main['Net Asset Value'])


for each in list2:
    mf_code=each
    nav = get_nav(mf_code)
    print (nav)

上述代码的输出:

Date
2019-04-05    29.8916
Name: Net Asset Value, dtype: float64
Date
2019-04-05    19.354
Name: Net Asset Value, dtype: float64

而,

我希望仅提取值,即 29.8916、19.354 等

更新代码:

def get_nav(mf_code):
    nav1=[]
    df_main=pd.DataFrame()
    code=str(mf_code)
#    try:
    df_main=quandl.get("AMFI/"+code,start_date='2019-04-05',end_date='2019-04-05')
    nav_value=df_main['Net Asset Value']
    if not nav_value.empty:
        nav1=nav_value[0]
        print(nav1)
#   print(df_main.head())
#    except IndexError:
#        nav_value=0
    return (nav1)


#Use merged sheet for work
df_port=pd.read_excel(fp_out)
df_port['Current Price']=df_port['Scheme_Code'].apply(lambda x:get_nav(x))

print(df_port['Current Price'].head())
df_port.to_excel(fp_out2)

【问题讨论】:

    标签: python-3.x pandas quandl


    【解决方案1】:

    默认情况下,quandl 时间序列 API 会返回一个以日期为索引的数据帧,即使只有一行。

    如果只需要第一行的值,可以使用iloc

    if not nav.empty:
        print (nav.iloc[0])
    

    或者只是简单的整数索引:

    if not nav.empty:
        print (nav[0])
    

    【讨论】:

    • IndexError: single positional indexer is out-of-bounds 我收到此错误,无法打印列表中的最后一个值。我无法理解它。
    • 您是否像我的回答一样检查了空数据框?如果数据框不为空.iloc[0] 应该不会失败...
    • 更新了上面粘贴的代码。我正在使用 .empty,但是列表的最后一个值在我正在生成的 excel 表中为我提供了一个“[]”(表明它不能完全解决问题)
    • 相当令人惊讶 - 但 API 以某种方式返回相应方案代码的空数据帧 - 这似乎是数据质量问题,与代码无关!感谢你的帮助! PS:如果你想测试它 - 方案代码是:141143
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2018-06-29
    • 1970-01-01
    • 2018-06-20
    • 2017-12-03
    • 1970-01-01
    • 2018-09-22
    相关资源
    最近更新 更多