2017-02-09 109 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