季度数据到月份数据

时间:2019-12-24 15:19:09

标签: python dataframe date

我有一个带有日期列的数据框。日期写为2002Q1,2002Q2,....

我希望每个季度有三行而不是一行,并将日期重命名为20020101、20020201和20020301作为第一季度的示例。

你有什么主意吗?谢谢

我的代码

    list=pd.read_csv(r"C:\Usersxyx.csv", delimiter = ',', usecols=["date", "ID", 'Value'])
list['year'] = [str(i)[:4] for i in list["date"]]
list ['month']= [str(i)[5:6] for i in list["date"]]
blist= pd.DataFrame(np.repeat(list.values, 3, axis=0))
blist.columns = list.columns

我的想法是将行复制三遍。这样我每个月都有一行。现在我不知道如何在20010101 20010201中更改2001Q1的日期,等等。

1 个答案:

答案 0 :(得分:1)

您可以遵循以下代码。 注意:请勿将数据框名称用作“列表”。我将名称更改为“ lista”

a1=pd.DataFrame([str(i)[0:4]+str((int(str(i)[5]))*3-2).zfill(2)+'01' for i in lista["date"]],columns= ['date1'])
a2=pd.DataFrame([str(i)[0:4]+str((int(str(i)[5]))*3-1).zfill(2)+'01' for i in lista["date"]],columns= ['date1'])
a3=pd.DataFrame([str(i)[0:4]+str((int(str(i)[5]))*3).zfill(2)+'01' for i in lista["date"]],columns= ['date1'])
pd.concat([a1,a2,a3])   
pd.concat([pd.concat([lista,a1],axis=1),pd.concat([lista,a2],axis=1),pd.concat([lista,a3],axis=1)], ignore_index=True)