.to_csv 生成包含随机日期格式的 csv 文件

.to_csv produces csv file which contains random date format

正在使用 .to_csv method to convert Dataframes。我得到日期字符串的随机日期格式。

对于 csv 中的给定列,日期格式在 mm/dd/yy 和 mm-dd-yyyy 之间奇怪地波动。原始数据框没有这个问题。

.csv 文件中的示例列

03-01-2014

10/19/13

04-11-2014

09/19/14

09/19/14

12/18/13

03-10-2013

04/13/14

我使用下面的代码生成日期列

def Get_random_date():
    t=datetime.datetime.now()
    mon=t.month
    dy=t.day
    yr=t.year

    year = random.choice(range(2013, yr+1))
    month = random.choice(range(1, mon+1))
    day = random.choice(range(1, 28))

    return pd.datetime(year,month,day)

def Generate_Dates():   
  DateCreated = pd.Series([])

  date_created=Get_random_date()

  DateCreated=date_created.strftime('%x')

  return (DateCreated)     
  ... 
  row=pd.DataFrame(index=index,columns=dt.columns)
  row['Date Created']=Generate_Dates()
  ...
  new_dt.to_csv('new_data.csv')  

.csv 文件中的示例列

03-01-2014

10/19/13

04-11-2014

09/19/14

09/19/14

12/18/13

03-10-2013

04/13/14

您是否指定 date_format?

df.to_csv(filename, date_format='%Y%m%d')

也许你可以这样做:

df.to_csv(filename, date_format='%Y/%m/%d')

与@bcollins 类似,但请注意每个字符串标识符之间的 /

或者您可以像这样使用 Pandas to_datetime(args) 功能:

dates = [ "03-01-2014",
         "10/19/13",
         "04-11-2014",    
         "09/19/14",    
         "09/19/14",    
         "12/18/13",   
         "03-10-2013",   
         "04/13/14" ]

df = pd.DataFrame(dates)
df = pd.to_datetime(df[0])

显然,您会将 0 替换为数据框中日期所在的列的名称,但我相信您明白了。

这导致:

0   2014-03-01
1   2013-10-19
2   2014-04-11
3   2014-09-19
4   2014-09-19
5   2013-12-18
6   2013-03-10
7   2014-04-13
Name: 0, dtype: datetime64[ns]

然后您可以将其写入您想要的 csv 文件。