简体   繁体   English

如何在 function 中引用 pandas dataframe 的索引列

[英]How to reference the index column of a pandas dataframe in a function

I can't figure out how to get this code to run properly.我不知道如何让这段代码正常运行。

df1 = pd.read_csv('TradeSheet2.csv', engine='python', sep=r'\s*,\s*', index_col='Symbol', header=0, encoding='ascii')
buy_sig = df1.loc[df1.Total >= 20]
sell_sig = df1.loc[df1.Total <= -20]
df2 = pd.read_csv('Header_Col.csv', index_col='Symbol')

def create_long():
    global df2
    dfnewlong = pd.concat([df2, buy_sig]).drop_duplicates(keep=False)
    print(dfnewlong)
    print(dfnewlong.index)
    dfnewlong.set_index('Symbol', inplace=True, drop=False)
    dfnewlong['DateTime'] = pd.to_datetime(dfnewlong['DateTime'])
    dfnewlong['Long_Short'] = dfnewlong['Long_Short'].fillna('Long')
    dfnewlong.Symbol = dfnewlong.Symbol.str.strip()
    ticker = dfnewlong['Symbol']
    livequote = si.get_live_price(ticker)
    dfnewlong['Entry_Price'] = dfnewlong['Entry_Price'].fillna(livequote)
    df2 = pd.concat([df2, dfnewlong])
    print(df2.columns)

create_long()

I keep getting the error: " KeyError: "None of ['Symbol'] are in the columns "我不断收到错误消息:“ KeyError: "None of ['Symbol'] are in the columns

What I'm trying to accomplish is for the function to pull the stock symbols into the variables, but it doesn't seem to work because the stock symbols are in the index column.我想要完成的是让 function 将股票代码拉入变量中,但它似乎不起作用,因为股票代码在索引列中。

Links to the files being used by the code: https://drive.google.com/file/d/1prqdn9l7wnA5hg2gKqGeubeWLo5kRvI6/view?usp=sharing https://drive.google.com/file/d/1vkFZYBPJqWzjcYPJFKyRHIMLkg5zJ7Oy/view?usp=sharing Links to the files being used by the code: https://drive.google.com/file/d/1prqdn9l7wnA5hg2gKqGeubeWLo5kRvI6/view?usp=sharing https://drive.google.com/file/d/1vkFZYBPJqWzjcYPJFKyRHIMLkg5zJ7Oy/view?usp =分享

Any suggestions?有什么建议么?

You need to call reset_index first, since you already set Symbol as index:您需要先调用reset_index ,因为您已经将Symbol设置为索引:

print(dfnewlong.index)
dfnewlong.reset_index(inplace=True) # <----- here
#dfnewlong.set_index('Symbol', inplace=True, drop=False)

Also you can remove the next line (the set_index call) if you want to unset 'Symbol' as index columns如果您想取消将“符号”设置为索引列,也可以删除下一行( set_index调用)

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

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