重命名设置为索引的列
Rename column that is set as index
我正在使用从 yahoo 中提取股票数据的脚本,为了使用它,我需要更改列名称,以便它们都是小写的。这在除“日期”之外的所有其他列上都很好用,“日期”由于某种原因没有改变。我尝试在 set_index
之前重命名列,但随后脚本停止保存 csv。
这是更改名称的行
df.rename(columns={'Date':'date',
'High':'high',
'Low':'low',
'Open':'open',
'Close':'close',
'Volume':'volume',
'Adj Close':'adj close'},
inplace=True)
这是代码中的样子
def get_data_from_yahoo(reload_sp500=False):
if reload_sp500:
tickers = save_sp500_tickers()
else:
with open("sp500tickers.pickle", "rb") as f:
tickers = pickle.load(f)
if not os.path.exists('stock_dfs'):
os.makedirs('stock_dfs')
start = dt.datetime(2010, 6, 8)
end = dt.datetime.now()
for ticker in tickers:
print(ticker)
if not os.path.exists('stock_dfs/{}.csv'.format(ticker)):
try:
df = pdr.get_data_yahoo(ticker, start, end)
df.reset_index(inplace=True)
df.set_index("Date", inplace=True)
df.rename(columns={'Date':'date',
'High':'high',
'Low':'low',
'Open':'open',
'Close':'close',
'Volume':'volume',
'Adj Close':'adj close'},
inplace=True)
df.to_csv('stock_dfs/{}.csv'.format(ticker))
time.sleep(2)
except:
continue
else:
print('Already have {}'.format(ticker))
我更新后(试过)
try:
df = pdr.get_data_yahoo(ticker, start, end)
df.reset_index(inplace=True)
df.set_index("Date", inplace=True)
df.rename(columns={'High':'high',
'Low':'low',
'Open':'open',
'Close':'close',
'Volume':'volume',
'Adj Close':'adj close'},
index = {'Date':'date'},
inplace=True)
df.to_csv('stock_dfs/{}.csv'.format(ticker))
然后这个
df.rename(columns={'High':'high',
'Low':'low',
'Open':'open',
'Close':'close',
'Volume':'volume',
'Adj Close':'adj close'}, inplace=True)
df.rename(index = {'Date':'date'}, inplace=True)
要重命名索引,您必须这样做
df.rename(columns={'High':'high',
'Low':'low',
'Open':'open',
'Close':'close',
'Volume':'volume',
'Adj Close':'adj close'},
inplace=True)
df.index.rename('date', inplace=True)
我正在使用从 yahoo 中提取股票数据的脚本,为了使用它,我需要更改列名称,以便它们都是小写的。这在除“日期”之外的所有其他列上都很好用,“日期”由于某种原因没有改变。我尝试在 set_index
之前重命名列,但随后脚本停止保存 csv。
这是更改名称的行
df.rename(columns={'Date':'date',
'High':'high',
'Low':'low',
'Open':'open',
'Close':'close',
'Volume':'volume',
'Adj Close':'adj close'},
inplace=True)
这是代码中的样子
def get_data_from_yahoo(reload_sp500=False):
if reload_sp500:
tickers = save_sp500_tickers()
else:
with open("sp500tickers.pickle", "rb") as f:
tickers = pickle.load(f)
if not os.path.exists('stock_dfs'):
os.makedirs('stock_dfs')
start = dt.datetime(2010, 6, 8)
end = dt.datetime.now()
for ticker in tickers:
print(ticker)
if not os.path.exists('stock_dfs/{}.csv'.format(ticker)):
try:
df = pdr.get_data_yahoo(ticker, start, end)
df.reset_index(inplace=True)
df.set_index("Date", inplace=True)
df.rename(columns={'Date':'date',
'High':'high',
'Low':'low',
'Open':'open',
'Close':'close',
'Volume':'volume',
'Adj Close':'adj close'},
inplace=True)
df.to_csv('stock_dfs/{}.csv'.format(ticker))
time.sleep(2)
except:
continue
else:
print('Already have {}'.format(ticker))
我更新后(试过)
try:
df = pdr.get_data_yahoo(ticker, start, end)
df.reset_index(inplace=True)
df.set_index("Date", inplace=True)
df.rename(columns={'High':'high',
'Low':'low',
'Open':'open',
'Close':'close',
'Volume':'volume',
'Adj Close':'adj close'},
index = {'Date':'date'},
inplace=True)
df.to_csv('stock_dfs/{}.csv'.format(ticker))
然后这个
df.rename(columns={'High':'high',
'Low':'low',
'Open':'open',
'Close':'close',
'Volume':'volume',
'Adj Close':'adj close'}, inplace=True)
df.rename(index = {'Date':'date'}, inplace=True)
要重命名索引,您必须这样做
df.rename(columns={'High':'high',
'Low':'low',
'Open':'open',
'Close':'close',
'Volume':'volume',
'Adj Close':'adj close'},
inplace=True)
df.index.rename('date', inplace=True)