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

时间:2015-01-13 06:06:03

标签: python date pandas format dataframe

使用.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

2 个答案:

答案 0 :(得分:0)

您是否指定了date_format?

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

答案 1 :(得分:0)

也许你可以这样做:

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文件。