将csv读入数据帧并将日期重新格式化为dd/mm/yyyy

2024-04-19 03:33:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下代码按日期将.csv读入数据帧索引:

def getCSVData(rawStaticDataPath):

    pattern = 'Overview-trade-pos'+'.csv'

    staticPath = rawStaticDataPath

    with open(staticPath+pattern,'rt') as f:

        csv=pd.read_csv(f,engine='c',header=0,index_col='date', parse_dates=True, infer_datetime_format=True,names=['date','id','settle_price','settle_price_acc','pos','trade'])        
        print(csv.sort_index().tail())           

    return csv 

当我跟踪文件时,我得到以下信息:

                         id  settle_price  
date                                                                       
2017-12-01  BBG.XTKS.7942.S     23.745497        
2017-12-01  BBG.XTKS.3926.S     26.499680       
2017-12-01  BBG.XTKS.9678.S     27.328124        
2017-12-01  BBG.XTKS.8153.S     29.855033        
2017-12-01  BBG.XTKS.2060.S      1.482091 

请注意,2017年3月31日是.csv中的最新记录日期。我按日期对.csv进行了排序,下面是最后几条记录:

31/03/2017  BBG.XASX.SCP.S  1.70883133  
31/03/2017  BBG.XASX.IFL.S  6.50754463  
31/03/2017  BBG.XASX.MFG.S  18.02732459 
31/03/2017  BBG.XASX.BHP.S  18.340116   
31/03/2017  BBG.XASX.MND.S  9.406557    
31/03/2017  BBG.XASX.VCX.S  2.15897147  

您可以看到,在读取文件中的日期已被重新格式化。你知道吗

请注意,日期超出了我在.csv中读到的最后一天。我想日期已经被重新格式化了。你知道吗

有没有一种方法可以在读取.csv文件时更改日期索引的格式?所以我相信期望的结果是:

2017-03-09      4740.969526
2017-01-10      2299.551489
2017-02-10   -255026.329808
2017-03-10    -22969.779504
2017-01-11    -11577.120402
2017-01-12    -73150.201727

显然记录的顺序会因此而改变。你知道吗


Tags: 文件csvpostruedateindex记录price
2条回答

我们使用strftime

df.index=df.index.strftime('%m/%d/%Y')
df
Out[300]: 
                        val
01/04/2016  BBG.XTKS.9716.S
01/04/2016  BBG.XTKS.9065.S
01/04/2016  BBG.XTKS.7966.S
01/04/2016  BBG.XTKS.3774.S
01/04/2016  BBG.XTKS.5110.S

看起来将dayfirst=True添加到read\u csv语句中就成功了。你知道吗

csv=pd.read_csv(f,engine='c',header=0,index_col='date', parse_dates=True, dayfirst=True,infer_datetime_format=True,names=['date','id','settle_price','settle_price_acc','pos','trade'])

相关问题 更多 >