我正在尝试将数据写入csv文件其他所有字段都写得很好,但不是日期字段。有人能解释一下出了什么问题吗
这是我的代码
def-writeData(self(:
query_string=f'https://query1.finance.yahoo.com/v7/finance/download/{self.ticker}?period1={self.period1}&period2={self.period2}&interval={self.interval}&events=history&includeAdjustedClose=true'.format(ticker=self.ticker,period1=self.period1,period2=self.period2,interval=self.interval)
filename="C:\Users\BRBCO\Downloads\out.csv"
url = query_string.replace(" ","")
df=pd.read_csv(url)
df.columns= df.columns.str.lower()
df.to_csv(filename,encoding='utf-8',date_format='%s')
这是csv文件的输出
在此处输入图像描述
98%的情况下,原因是CSV是直接用Excel打开的,因此适用Microsoft标准。
当单元格内容太宽而无法在单元格中显示时,Excel总是显示哈希标记。可以通过加宽相应的列来解决此问题。
一般
-
如果要使用Excel,请转换DataFrame
.to_excel()
或打开Excel,通过菜单项"数据"导入CSV文件,并对解释列值进行调整。 -
否则,您应该在文本编辑器中打开CSV,它将相应地显示值。
首先,屏幕截图中的B列不够宽,所以所有值都显示########
,我们不可能看到实际的输出值。
其次,确保在读取文件时,日期时间值实际上被解释为日期时间数据类型。因此,将dayfirst=True, parse_dates=True
添加到read_csv中,并根据您的数据尝试将dayfirst
参数更改为True/False。
最后,当将日期时间值写入CSV时,使用ISO格式YYYY-MM-DD
总是更容易,例如2022-03-31
,因为这是明确的,不依赖于任何任意的系统设置。您可以通过在write_csv中设置date_format
来写入ISO日期。
filename="C:\Users\BRBCO\Downloads\out.csv"
url = query_string.replace(" ", "")
df=pd.read_csv(url, dayfirst=True, parse_dates=True)
df.columns = df.columns.str.lower()
df.to_csv(filename, encoding='utf-8', date_format='%Y-%m-%d')