2017-02-09 58 views
0

我希望有一个相对简单的解决我的问题:分割CSV日期

我有一个CSV与选择的数据点,但它们都包括日期字段。

我希望能够根据日期字段的月份将csv拆分为多个文件。

例如:我希望能够2015年3月之前将所有记录在一个文件中,所有2015年4月之前在另一个,最多的2016十月等

在这种情况下会出现前许多文件之间的重复记录。

有没有办法做到这一点与一个简单的Python代码或有一个更简单的方法?

预先感谢

+2

请放心,你可以用python来做:) 笑话不谈,到目前为止你做了什么,你能分享一些数据吗? – zipa

+0

目前我一直试图在分隔符手动执行它,问题是我有超过200万的记录,这使得它很难分享。这是15年的房屋销售数据与“支付价格”字段,“销售日期”,“坐标”等。 – Jamie

+1

建议的话 - 永远不会分享实际数据。另一方面,你必须分享数据的例子,以便任何人能够帮助你或给你建议。数据格式为5行,格式与源代码相同。 – zipa

回答

0

此代码假定日期字段是在第一列中,并且标记为“dates”。我们使用熊猫将数据读入数据框,并将['dates']作为列转换为日期对象。然后,我们使用年份和月份采用不同的数据帧片段来创建子集视图。然后,每个视图转储到新的CSV格式为year_month.csv

import pandas as pd 

df = pd.read_csv('filename.csv', parse_dates=['dates']) 

for year in df.dates.apply(lambda x: x.year).unique(): 
    for month in df.dates.apply(lambda x: x.month).unique(): 
     view = df[df.dates.apply(lambda x: x.month == month and x.year==year)] 
     if view.size: 
      view.to_csv('{}_{:0>2}.csv'.format(year, month)) 

有可能是一个更好的方式来做到这一点,但这会完成这项工作。

+0

谢谢你的帮助詹姆斯。运行代码我得到的属性错误:'str'对象没有属性'year':这是与我的日期格式在字段中吗?它目前是日/月/年 – Jamie

+0

日期栏的标题是什么?这就是需要传递给'parse_dates'关键字输入的东西。 – James