我的CSV文件是这样排列的,有一行名为"日期",该行下面是一个巨大的列一百万个日期,在传统的格式像"4/22/2015"和"3/27/2014"。
我怎样才能编写一个程序来识别CSV文件中的最早和最晚日期,同时保持原始格式(月/日/年)?
我试过了
for line in count_dates:
dates = line.strip().split(sep="/")
all_dates.append(dates)
print (all_dates)
我试过去掉"/"并用空格替换它,但它没有打印任何内容。
5条答案
按热度按时间mrwjdhj31#
让我们打开csv文件,读出所有的日期,然后使用
strptime
将它们转换为可比较的datetime对象(现在,我们可以使用max
),最后,让我们打印出最大(最晚)的日期当然,您可以使用
min
来获取最早的日期,但是这需要两次线性运行,如果您愿意自己完成一些繁重的工作,则只需一次即可:lg40wkob2#
一点RTFM的回答:打开csv格式的文件(参见csv库),然后逐行迭代,将日期字段转换为日期对象(参见将字符串转换为日期对象的文档),如果到目前为止它小于minimum,则将其存储为minimum,类似于max,但在第一行有一个特殊条件,即日期同时成为最小和最大日期。
或者,为了避免麻烦,您可以使用Pandas将其读入一个 Dataframe ,将特定列指定为日期格式,然后使用max & min。
oewdyzsn3#
我认为用Pandas来做这个比较方便。
内置函数与Pandas Dataframes配合良好。
要进一步了解
pd.to_datatime
中的格式功能,可以使用Pythonstrftime
cheat sheetpwuypxnk4#
wpcxdonn5#
考虑到您有一个大文件,将其整个读入内存是一个坏主意。
逐行读取文件,手动跟踪最早和最晚的日期。使用datetime.datetime.strptime将字符串转换为日期(以字符串格式为参数。