Pandas 找不到列,ValueError
Pandas can't find columns, ValueError
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
symbols = ["AAPL", "GLD", "TSLA", "GBL", "GOOGL"]
def compare_security(symbols):
start_date = "01-01-2019"
end_date = "01-12-2020"
dates = pd.date_range(start_date, end_date)
df1 = pd.DataFrame(index=dates)
df_SPY = pd.read_csv(
"https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=SPY&apikey=XXXX&datatype=csv",
index_col="timestamp", usecols=["timestamp", "adjusted_close"], parse_dates=True, na_values=['nan'])
df_SPY = df_SPY.rename(columns={"adjusted_close": "SPY"})
df1 = df1.join(df_SPY, how="inner")
for symbol in symbols:
df_temp= pd.read_csv("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey=XXXX&datatype=csv".format(symbol),
index_col = "timestamp", usecols = ["timestamp", "adjusted_close"], parse_dates=True, na_values=['nan'])
df_temp = df_temp.rename(columns={"adjusted_close":symbol})
df1 = df1.join(df_temp)
return df1
def test_run():
df = compare_security(symbols)
print(df)
df.plot()
plt.title(symbols)
plt.show()
if __name__ == "__main__":
test_run()
读取错误"ValueError: Usecols do not match columns, columns expected but not found: ['timestamp', 'adjusted_close']"
但是,我检查了代码将检索的所有文件,它们都有各自的列。任何关于我哪里出错的澄清将不胜感激。
请 运行 在 IDLE 中执行以下命令,您会注意到 parse_dates=True 是罪魁祸首。它为什么这样做?我不知道,但至少你现在知道是什么导致了错误。
for symbol in symbols:
df_temp= pd.read_csv("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey=XX3U125BWQLTU2VZ&datatype=csv".format(symbol))
print(df_temp.columns)
和
for symbol in symbols:
df_temp= pd.read_csv("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey=XX3U125BWQLTU2VZ&datatype=csv".format(symbol), parse_dates=True)
print(df_temp.columns)
您正在使用标准密钥达到 API 限制。标准密钥允许 5 API 次调用/分钟和 500 次/天,这就是它有时起作用的原因。
您可以看到,如果您将 URL 粘贴到浏览器并在 60 秒内刷新 5 - 10 次,您将手动达到限制。
您可以:
- 升级到 premium key.
- Space 打断你的 API 电话(等待 60
在你 运行 秒之后再次 运行 它)
关于隐私的说明,也可能与您的 API 阈值命中有关。您已公开分享您的 API 密钥。
- 将您的 API 密钥放在环境变量中
- 当你 post 时,使用 "XXXX" 或其他影响的东西作为 API 键替代。
如果您公开分享您的 API 密钥,其他人可以使用它,这意味着其他人可能正在使用您的 5 API 次调用/分钟。
样本:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
symbols = ["AAPL", "GLD", "TSLA", "GBL", "GOOGL"]
def compare_security(symbols):
start_date = "01-01-2019"
end_date = "01-12-2020"
dates = pd.date_range(start_date, end_date)
df1 = pd.DataFrame(index=dates)
df_SPY = pd.read_csv(
"https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=SPY&apikey={}&datatype=csv".format(
os.getenv("ALPHAVANTAGE_API_KEY")),
index_col="timestamp", usecols=["timestamp", "adjusted_close"], parse_dates=True, na_values=['nan'])
df_SPY = df_SPY.rename(columns={"adjusted_close": "SPY"})
df1 = df1.join(df_SPY, how="inner")
for symbol in symbols:
df_temp = pd.read_csv("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey={}&datatype=csv".format(symbol, os.getenv("ALPHAVANTAGE_API_KEY")),
index_col="timestamp", usecols=["timestamp", "adjusted_close"], parse_dates=True, na_values=['nan'])
df_temp = df_temp.rename(columns={"adjusted_close": symbol})
df1 = df1.join(df_temp)
return df1
def test_run():
df = compare_security(symbols)
print(df)
df.plot()
plt.title(symbols)
plt.show()
if __name__ == "__main__":
test_run()
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
symbols = ["AAPL", "GLD", "TSLA", "GBL", "GOOGL"]
def compare_security(symbols):
start_date = "01-01-2019"
end_date = "01-12-2020"
dates = pd.date_range(start_date, end_date)
df1 = pd.DataFrame(index=dates)
df_SPY = pd.read_csv(
"https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=SPY&apikey=XXXX&datatype=csv",
index_col="timestamp", usecols=["timestamp", "adjusted_close"], parse_dates=True, na_values=['nan'])
df_SPY = df_SPY.rename(columns={"adjusted_close": "SPY"})
df1 = df1.join(df_SPY, how="inner")
for symbol in symbols:
df_temp= pd.read_csv("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey=XXXX&datatype=csv".format(symbol),
index_col = "timestamp", usecols = ["timestamp", "adjusted_close"], parse_dates=True, na_values=['nan'])
df_temp = df_temp.rename(columns={"adjusted_close":symbol})
df1 = df1.join(df_temp)
return df1
def test_run():
df = compare_security(symbols)
print(df)
df.plot()
plt.title(symbols)
plt.show()
if __name__ == "__main__":
test_run()
读取错误"ValueError: Usecols do not match columns, columns expected but not found: ['timestamp', 'adjusted_close']"
但是,我检查了代码将检索的所有文件,它们都有各自的列。任何关于我哪里出错的澄清将不胜感激。
请 运行 在 IDLE 中执行以下命令,您会注意到 parse_dates=True 是罪魁祸首。它为什么这样做?我不知道,但至少你现在知道是什么导致了错误。
for symbol in symbols:
df_temp= pd.read_csv("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey=XX3U125BWQLTU2VZ&datatype=csv".format(symbol))
print(df_temp.columns)
和
for symbol in symbols:
df_temp= pd.read_csv("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey=XX3U125BWQLTU2VZ&datatype=csv".format(symbol), parse_dates=True)
print(df_temp.columns)
您正在使用标准密钥达到 API 限制。标准密钥允许 5 API 次调用/分钟和 500 次/天,这就是它有时起作用的原因。
您可以看到,如果您将 URL 粘贴到浏览器并在 60 秒内刷新 5 - 10 次,您将手动达到限制。
您可以:
- 升级到 premium key.
- Space 打断你的 API 电话(等待 60 在你 运行 秒之后再次 运行 它)
关于隐私的说明,也可能与您的 API 阈值命中有关。您已公开分享您的 API 密钥。
- 将您的 API 密钥放在环境变量中
- 当你 post 时,使用 "XXXX" 或其他影响的东西作为 API 键替代。
如果您公开分享您的 API 密钥,其他人可以使用它,这意味着其他人可能正在使用您的 5 API 次调用/分钟。
样本:
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import os
symbols = ["AAPL", "GLD", "TSLA", "GBL", "GOOGL"]
def compare_security(symbols):
start_date = "01-01-2019"
end_date = "01-12-2020"
dates = pd.date_range(start_date, end_date)
df1 = pd.DataFrame(index=dates)
df_SPY = pd.read_csv(
"https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=SPY&apikey={}&datatype=csv".format(
os.getenv("ALPHAVANTAGE_API_KEY")),
index_col="timestamp", usecols=["timestamp", "adjusted_close"], parse_dates=True, na_values=['nan'])
df_SPY = df_SPY.rename(columns={"adjusted_close": "SPY"})
df1 = df1.join(df_SPY, how="inner")
for symbol in symbols:
df_temp = pd.read_csv("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol={}&apikey={}&datatype=csv".format(symbol, os.getenv("ALPHAVANTAGE_API_KEY")),
index_col="timestamp", usecols=["timestamp", "adjusted_close"], parse_dates=True, na_values=['nan'])
df_temp = df_temp.rename(columns={"adjusted_close": symbol})
df1 = df1.join(df_temp)
return df1
def test_run():
df = compare_security(symbols)
print(df)
df.plot()
plt.title(symbols)
plt.show()
if __name__ == "__main__":
test_run()