python - 如何在函数中引用熊猫数据框的索引列
问题描述
我不知道如何让这段代码正常运行。
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()
我不断收到错误:“ KeyError: "None of ['Symbol'] are in the columns
”
我想要完成的是将股票代码拉入变量的函数,但它似乎不起作用,因为股票代码在索引列中。
代码使用的文件的链接: https://drive.google.com/file/d/1prqdn9l7wnA5hg2gKqGeubeWLo5kRvI6/view?usp=sharing https://drive.google.com/file/d/1vkFZYBPJqWzjcYPJFKyRHIMLkg5zJ7Oy/view?usp =分享
有什么建议么 ?
解决方案
您需要先调用reset_index
,因为您已经设置Symbol
为索引:
print(dfnewlong.index)
dfnewlong.reset_index(inplace=True) # <----- here
#dfnewlong.set_index('Symbol', inplace=True, drop=False)
set_index
如果要取消将“符号”设置为索引列,也可以删除下一行(调用)
推荐阅读
- linux - 使用 shell 脚本操作文本文件
- java - 在 JVM 级别控制 2 的平方?
- netcdf - 使用“自以来”的时间单位解码 netcdf 数据时出现 xarray 错误
- javascript - JavaScript 对象推送到数组但无法正常工作
- matlab - 如何在 MATLAB 上使用多个 GPU - 设备内存不足
- variables - Jmeter函数解析包含$符号的字符串
- java - 如何从单个 Java 文件生成调用图?
- python - 在列表上迭代(屈服)
- python-3.x - Python Selenium Chrome 获取默认下载路径
- python - 如何将二进制转换为字符串?