重命名设置为索引的列

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)