有没有办法在行和列之间匹配不同的日期样式

时间:2020-07-14 18:09:46

标签: python python-datetime

我正在阅读的两个文件具有不同的样式,并且我试图将它们设置为相似的样式,以便可以进行回归分析。一个具有美国状态的行,列的日期(以MM / DD / YYYY表示)以及每个单元格的编号,格式如下。

|---------------------|------------------|------------------|------------------|
|      State          |     1/1/2020     |     1/2/2020     |     1/3/2020     |
|---------------------|------------------|------------------|------------------|
|          AL         |          3       |          5       |          5       |
|---------------------|------------------|------------------|------------------|
|          AK         |          0       |          2       |          4       |
|---------------------|------------------|------------------|------------------|
|          AR         |          0       |          5       |          3       |
|---------------------|------------------|------------------|------------------|

我还有另外一列,其中包括以下样式的状态列和日期列(以YYYY-MM-DD结尾,并带有时间)

|---------------------|------------------|------------------|
|      State          |       Event      |     Date         |
|---------------------|------------------|------------------|
|          TX         |      Event 1     |    2020-03-06    |
|---------------------|------------------|------------------|
|          VA         |      Event 2     |    2020-06-07    |
|---------------------|------------------|------------------|
|          AK         |      Event 3     |    2020-05-22    |
|---------------------|------------------|------------------|

是否有一种方法可以制作与第一个文件相同的样式的数据框(每个状态都有一个状态列和一个日期),该数据框可以计算某状态在某天发生的事件的次数?也就是说,如果6月6日在得克萨斯州发生了3个事件,则6/6/2020列和TX行中的单元格中有3个事件。 到目前为止,这是我尝试过的方法,它卡在第一条dftemp行中。谢谢

df= pd.read_csv('file1')
states=df['State'].unique().tolist()
df2= pd.read_excel('file2', sheet_name='sheet1')
newdf2= pd.DataFrame(columns=df.columns)
for i in range(0,len(states)):
    templist=[states[i]]
    for j in range(1,len(df.columns)):
        dftemp=df2.loc[datetime.strptime(df2['Date'].to_string(), '%Y-%m-%d') == datetime.strptime(df.columns[j].to_string(), '%m/%d/%Y')]
        dftemp=dftemp.loc[dftemp['State']==states[i]
        templist.append(dftemp.shape[0])
    newdf2.append(templist)

                                    

       

0 个答案:

没有答案