在python 2中将数据帧保存为CSV

在python 2中将数据帧保存为CSV,python,csv,pandas,Python,Csv,Pandas,我正在尝试将数据帧保存到Csv。当我打印数据框时,它会生成我想要的输出,但是当我将数据框保存到csv时,我只会将数据框的最后一行保存到csv文件中。。到目前为止我所尝试的 Index_tickers = pd.read_csv('C:\\Users\\ME\\Dropbox\\MktData\\Index_list\\Index_tickers.csv') Ticker = Index_tickers.ticker for ticker in Index_tickers.ticker:

我正在尝试将数据帧保存到Csv。当我打印数据框时,它会生成我想要的输出,但是当我将数据框保存到csv时,我只会将数据框的最后一行保存到csv文件中。。到目前为止我所尝试的

Index_tickers = pd.read_csv('C:\\Users\\ME\\Dropbox\\MktData\\Index_list\\Index_tickers.csv')
Ticker = Index_tickers.ticker



for ticker in Index_tickers.ticker:    
    index_data = pd.read_csv('C:\\Users\\ME\\Dropbox\\MktData\\Index_list\\' + ticker + '_1.csv')
    mkt_data = index_data[['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume']]
    numRow = 2

    while numRow < endRow:
        dOpen0 = mkt_data.ix[numRow, 'Open']
        dHigh0 = mkt_data.ix[numRow, 'High']
        dLow0 = mkt_data.ix[numRow, 'Low']
        dClose0 = mkt_data.ix[numRow, 'Close']
        dDate0 = mkt_data.ix[numRow, 'Date']
        dTime0 = mkt_data.ix[numRow, 'Time']
        dTicker0 = index_data.ix[numRow, 'Ticker']

        dHaClose0 = (dOpen0 + dHigh0 + dLow0 + dClose0) / 4
        dClose1 = mkt_data.ix[numRow -2  , 'Close']
        dOpen1 = mkt_data.ix[numRow -2  , 'Open']
        dHaOpen0 = (dClose1 + dOpen1) / 2 
        dHaHigh0 = max(dHigh0, dHaOpen0, dHaClose0)
        dHaLow0 = min(dLow0, dHaOpen0, dHaClose0)

        dHaGreen0 = dHaClose0 > dHaOpen0
        dHaRed0 = dHaClose0 < dHaOpen0
        dNumRow = numRow        
        numRow = numRow + 1        
        df = pd.DataFrame({'numRow' : pd.Series(dNumRow), 'Time' : pd.Series(dTime0), 'Date' : pd.Series(dDate0), 'Ticker' : pd.Series(dTicker0), 'Open0' : pd.Series(dOpen0), 'High0' : pd.Series(dHigh0), 'Low0' : pd.Series(dLow0), 'Close0' : pd.Series(dClose0)})
        #print df
        df.to_csv('C:\Users\\ME\\Dropbox\\MktData\HaDetail.csv')
Index\u tickers=pd.read\u csv('C:\\Users\\ME\\Dropbox\\MktData\\Index\u list\\Index\u tickers.csv'))
Ticker=Index\u tickers.Ticker
对于Index_tickers.ticker中的ticker:
index\u data=pd.read\u csv('C:\\Users\\ME\\Dropbox\\MktData\\index\u list\\'+ticker+'\u 1.csv'))
mkt_数据=索引_数据[['Date'、'Time'、'Open'、'High'、'Low'、'Close'、'Volume']]
numRow=2
当numRowdHaOpen0
dHaRed0=dHaClose0

非常感谢您的帮助。我是python新手,在工作中学习。

您在每次迭代中都会覆盖您的csv,因为默认的
模式是
'w'
,如果它存在,它将被覆盖,此外,您正在写标题,您只需要在第一次迭代中执行此操作,因此我将执行以下操作:

Index_tickers = pd.read_csv('C:\\Users\\ME\\Dropbox\\MktData\\Index_list\\Index_tickers.csv')
Ticker = Index_tickers.ticker
writeHeader = True


for ticker in Index_tickers.ticker:    
    index_data = pd.read_csv('C:\\Users\\ME\\Dropbox\\MktData\\Index_list\\' + ticker + '_1.csv')
    mkt_data = index_data[['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume']]
    numRow = 2

    while numRow < endRow:
        dOpen0 = mkt_data.ix[numRow, 'Open']
        dHigh0 = mkt_data.ix[numRow, 'High']
        dLow0 = mkt_data.ix[numRow, 'Low']
        dClose0 = mkt_data.ix[numRow, 'Close']
        dDate0 = mkt_data.ix[numRow, 'Date']
        dTime0 = mkt_data.ix[numRow, 'Time']
        dTicker0 = index_data.ix[numRow, 'Ticker']

        dHaClose0 = (dOpen0 + dHigh0 + dLow0 + dClose0) / 4
        dClose1 = mkt_data.ix[numRow -2  , 'Close']
        dOpen1 = mkt_data.ix[numRow -2  , 'Open']
        dHaOpen0 = (dClose1 + dOpen1) / 2 
        dHaHigh0 = max(dHigh0, dHaOpen0, dHaClose0)
        dHaLow0 = min(dLow0, dHaOpen0, dHaClose0)

        dHaGreen0 = dHaClose0 > dHaOpen0
        dHaRed0 = dHaClose0 < dHaOpen0
        dNumRow = numRow        
        numRow = numRow + 1        
        df = pd.DataFrame({'numRow' : pd.Series(dNumRow), 'Time' : pd.Series(dTime0), 'Date' : pd.Series(dDate0), 'Ticker' : pd.Series(dTicker0), 'Open0' : pd.Series(dOpen0), 'High0' : pd.Series(dHigh0), 'Low0' : pd.Series(dLow0), 'Close0' : pd.Series(dClose0)})
        #print df
        if writeHeader:
            df.to_csv('C:\Users\\ME\\Dropbox\\MktData\HaDetail.csv')
            writeHeader = False
        else:
            df.to_csv('C:\Users\\ME\\Dropbox\\MktData\HaDetail.csv', header=False, mode='a')
Index\u tickers=pd.read\u csv('C:\\Users\\ME\\Dropbox\\MktData\\Index\u list\\Index\u tickers.csv'))
Ticker=Index\u tickers.Ticker
writeHeader=True
对于Index_tickers.ticker中的ticker:
index\u data=pd.read\u csv('C:\\Users\\ME\\Dropbox\\MktData\\index\u list\\'+ticker+'\u 1.csv'))
mkt_数据=索引_数据[['Date'、'Time'、'Open'、'High'、'Low'、'Close'、'Volume']]
numRow=2
当numRowdHaOpen0
dHaRed0=dHaClose0

因此,我们只在第一次迭代时写入标题,然后对于每个后续迭代,将
模式更改为
'a'
,这样它会附加到文件中,请参见在每次迭代时覆盖csv的,因为默认的
模式是
'w'
,如果它存在,将覆盖它,此外,您正在编写标题,您只需要在第一次迭代时执行此操作,因此我将执行以下操作:

Index_tickers = pd.read_csv('C:\\Users\\ME\\Dropbox\\MktData\\Index_list\\Index_tickers.csv')
Ticker = Index_tickers.ticker
writeHeader = True


for ticker in Index_tickers.ticker:    
    index_data = pd.read_csv('C:\\Users\\ME\\Dropbox\\MktData\\Index_list\\' + ticker + '_1.csv')
    mkt_data = index_data[['Date', 'Time', 'Open', 'High', 'Low', 'Close', 'Volume']]
    numRow = 2

    while numRow < endRow:
        dOpen0 = mkt_data.ix[numRow, 'Open']
        dHigh0 = mkt_data.ix[numRow, 'High']
        dLow0 = mkt_data.ix[numRow, 'Low']
        dClose0 = mkt_data.ix[numRow, 'Close']
        dDate0 = mkt_data.ix[numRow, 'Date']
        dTime0 = mkt_data.ix[numRow, 'Time']
        dTicker0 = index_data.ix[numRow, 'Ticker']

        dHaClose0 = (dOpen0 + dHigh0 + dLow0 + dClose0) / 4
        dClose1 = mkt_data.ix[numRow -2  , 'Close']
        dOpen1 = mkt_data.ix[numRow -2  , 'Open']
        dHaOpen0 = (dClose1 + dOpen1) / 2 
        dHaHigh0 = max(dHigh0, dHaOpen0, dHaClose0)
        dHaLow0 = min(dLow0, dHaOpen0, dHaClose0)

        dHaGreen0 = dHaClose0 > dHaOpen0
        dHaRed0 = dHaClose0 < dHaOpen0
        dNumRow = numRow        
        numRow = numRow + 1        
        df = pd.DataFrame({'numRow' : pd.Series(dNumRow), 'Time' : pd.Series(dTime0), 'Date' : pd.Series(dDate0), 'Ticker' : pd.Series(dTicker0), 'Open0' : pd.Series(dOpen0), 'High0' : pd.Series(dHigh0), 'Low0' : pd.Series(dLow0), 'Close0' : pd.Series(dClose0)})
        #print df
        if writeHeader:
            df.to_csv('C:\Users\\ME\\Dropbox\\MktData\HaDetail.csv')
            writeHeader = False
        else:
            df.to_csv('C:\Users\\ME\\Dropbox\\MktData\HaDetail.csv', header=False, mode='a')
Index\u tickers=pd.read\u csv('C:\\Users\\ME\\Dropbox\\MktData\\Index\u list\\Index\u tickers.csv'))
Ticker=Index\u tickers.Ticker
writeHeader=True
对于Index_tickers.ticker中的ticker:
index\u data=pd.read\u csv('C:\\Users\\ME\\Dropbox\\MktData\\index\u list\\'+ticker+'\u 1.csv'))
mkt_数据=索引_数据[['Date'、'Time'、'Open'、'High'、'Low'、'Close'、'Volume']]
numRow=2
当numRowdHaOpen0
dHaRed0=dHaClose0