如何根据第一列(python)中的日期将csv文件拆分成相应的csv文件?

时间:2017-07-09 23:01:40

标签: python python-3.x pandas

我有一个带有多年电力负荷数据的大型CSV,我想将其分成多个月份和年份的文件 - 即返回2013年,2014年1月,2月,3月等的个人CSV, 2015等。

我已经在论坛中审查了很多解决方案,并且没有任何运气。我当前的文件结构如下;

01-JAN-11,1,34606,34677,35648,35685,31058,484,1730

01-JAN-11,2,35092,35142,36089,36142,31460,520,1730

01-JAN-11,3,34725,34761,36256,36234,31109,520,1730

01-JAN-11,4,33649,33698,35628,35675,30174,512,1730

日期列中列标题的名称是" SETTLEMENT DATE"。我熟悉使用熊猫和df&s;但似乎无法解决如何做这个问题!

谢谢!

1 个答案:

答案 0 :(得分:0)

以下是如何做到这一点。

首先,您从csv_file读取数据并保存cols,如下所示:

df = pd.read_csv('path/input.csv')
cols = df.columns

然后您向dataframe MonthYear添加两列:

df['Year'] = df['SETTLEMENT DATE'].apply(lambda x: x.split('-')[-1])
df['Month'] = df['SETTLEMENT DATE'].apply(lambda x: x.split('-')[1])

您要做的就是将您的数据框分别按月{年} csv files编写,每个file都带有monthyear的名称如下:

for i in set(df.Year): # for classified by years files
    filename = "path/"+i+".csv"
    df.loc[df.Year == i].to_csv(filename,index=False,columns=cols)

for i in set(df.Month): # for classified by months files
    filename = "path/"+i+".csv"
    df.loc[df.Month == i].to_csv(filename,index=False,columns=cols)

希望这有用。