Python 3.x 错误读取的年份是系统--yyy被读取为YY
我有一个以制表符分隔的txt文件。很少列的日期数据格式为 “2011年12月”、“1994年1月” etc日期范围为“1944年1月至2015年12月” 问题是原始数据中的日期格式为“Jan-1994”或年份为YYYY格式,但当我使用Spyder(3.7或4.0.1)或Jupyter或Notepad++读取数据时,无论何时,日期都被读取为 “1994年1月”、“2011年12月”等 我正在使用以下代码:Python 3.x 错误读取的年份是系统--yyy被读取为YY,python-3.x,pandas,python-datetime,Python 3.x,Pandas,Python Datetime,我有一个以制表符分隔的txt文件。很少列的日期数据格式为 “2011年12月”、“1994年1月” etc日期范围为“1944年1月至2015年12月” 问题是原始数据中的日期格式为“Jan-1994”或年份为YYYY格式,但当我使用Spyder(3.7或4.0.1)或Jupyter或Notepad++读取数据时,无论何时,日期都被读取为 “1994年1月”、“2011年12月”等 我正在使用以下代码: import pandas as pd Raw_Data=pd.read_csv("XYZC
import pandas as pd
Raw_Data=pd.read_csv("XYZCorp_LendingData.txt", encoding="Latin-1", sep ='\t', low_memory=False)
输出应为:-此输出在办公系统中,这是正确的格式
但是
我得到如下输出,因为我的系统以YY格式而不是YYYY格式读取。
此输出在我的笔记本电脑中,不正确
此日期问题导致多个错误
此外,这个问题不仅与Spyder有关,我还面临其他应用程序(如Notepad++和Jupyter)的问题
**另请注意,我确保我交叉验证了两个系统中的日期和区域设置,两者几乎相同您确定数据读取不正确吗?您可以通过将df写入新文件并检查新文件来检查它
import pandas as pd
Raw_Data=pd.read_csv("XYZCorp_LendingData.txt", encoding="Latin-1", sep ='\t', low_memory=False)
Raw_Data.to_csv('Date_check.csv')
我的猜测是,数据读取正确,但根据您的一些配置首选项显示。如果没有正确读取日期,您可以指定熊猫应该如何解析日期。使用pd.read\u csv()
中的date\u解析器
可选参数,例如:
import pandas as pd
parser = pd.to_datetime
df = pd.read_csv('file_name', parse_dates=[col_num_containing_dates], date_parser=parser)
其中,parser
是要使用的函数名(不包括()
,因为这将调用函数),col\u num\u containing\u dates
是包含要解析的日期的列的编号
如果您希望更改日期的显示方式,则可以设置/更改系统的locale
或使用date.strftime(format)
明确指定您想要的格式
最后,如果您想更改导出
.csv
时写入日期的方式,您可以指定一个选项df.to\u csv(date\u format='%d-%m-%Y')
您是否尝试过用纯python打开该文件?你确定这是4位数的年份吗?是的,我也试过。最糟糕的是,当我在其他同事的笔记本电脑上复制粘贴时,相同的代码集和相同的数据集运行得很好。所有的库都被更新了,系统几乎都是相同的,这很可能是你机器的本地问题,而不是一个可复制的问题。我怀疑系统的区域和时间设置,但不知道我们是什么?有什么建议吗
import pandas as pd
Raw_Data=pd.read_csv("XYZCorp_LendingData.txt", encoding="Latin-1", sep ='\t', low_memory=False)
Raw_Data.to_csv('Date_check.csv')
import pandas as pd
parser = pd.to_datetime
df = pd.read_csv('file_name', parse_dates=[col_num_containing_dates], date_parser=parser)
from datetime import datetime
test_string = '13-02-2019'
test_date = datetime.strptime(test_string, '%d-%m-%Y') # Create a datetime object
test_date.strftime('%d-%m-%y')
# Output: '13-02-19'
test_date.strftime('%d-%m-%Y') # Note the capital 'Y'
# Output: '13-02-2019'