Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重命名设置为索引的列_Python_Pandas_Csv_Stock - Fatal编程技术网

Python 重命名设置为索引的列

Python 重命名设置为索引的列,python,pandas,csv,stock,Python,Pandas,Csv,Stock,我正在使用从yahoo提取股票数据的脚本,为了使用它,我需要更改列名,使它们都是小写。这在所有其他列上都可以正常工作,除了“Date”,因为某些原因它不会更改。我尝试在set\u index之前重命名这些列,但是脚本停止保存csv 这是更改名称的行 df.rename(columns={'Date':'date', 'High':'high', 'Low':'low',

我正在使用从yahoo提取股票数据的脚本,为了使用它,我需要更改列名,使它们都是小写。这在所有其他列上都可以正常工作,除了“Date”,因为某些原因它不会更改。我尝试在
set\u 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))

在我更新(尝试)之后

然后这个

                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)

我刚刚更新了上面的代码,我按照你说的做了,但它正在重命名除“日期”列之外的所有列。我认为这是因为它使用它作为索引,而不考虑它自己的列,我也尝试过将它作为一个新函数并以这种方式重命名,但它没有改变,我已经更新了答案,使它更详细。你能试试这个吗?所以我试着用几种不同的方式格式化它并改变顺序,但它似乎不起作用。我在上一次编辑问题时添加了两种方法。这应该可以帮到你。
 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)