2017-11-14 1 views
0

Zuerst habe ich diese Funktion, die einen Datumsrahmen zurückgibt, aber ich möchte in einer Liste von Daten verwenden und dann verketten sie in einem Datenrahmen mit dem Index als Datum Zeit Briefmarke, die in der Liste enthalten istIndex datatime in einem Datumsrahmen aus einer Liste von Datumsangaben

lista = [datetime.datetime(2017, 11, 11, 0, 0), datetime.datetime(2017, 11, 12, 0, 0), datetime.datetime(2017, 11, 13, 0, 0)] 

Dies ist meine Funktion:

def min_f(yyear,mmonth,dday): 

    a_00_04 = int(df_output.loc[ (df_output.index > timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday)-timedelta(hours=1))) & (df_output.index <= timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday,4)+timedelta(hours=2))) ].min()) #.tolist()[0]# 
    a_04_08 = int(df_output.loc[ (df_output.index > timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday,4,00)-timedelta(hours=1))) & (df_output.index <= timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday,8,00)+timedelta(hours=2))) ].min()) 
    a_08_12 = int(df_output.loc[ (df_output.index > timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday,8,00)-timedelta(hours=1))) & (df_output.index <= timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday,12,00)+timedelta(hours=2))) ].min()) 
    a_12_16 = int(df_output.loc[ (df_output.index > timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday,12,00)-timedelta(hours=1))) & (df_output.index <= timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday,16,00)+timedelta(hours=2))) ].min()) 
    a_16_20 = int(df_output.loc[ (df_output.index > timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday,16,00)-timedelta(hours=1))) & (df_output.index <= timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday,20,00)+timedelta(hours=2))) ].min()) 
    a_20_24 = int(df_output.loc[ (df_output.index > timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday,20,00)-timedelta(hours=1))) & (df_output.index <= timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday+1,00,00)+timedelta(hours=2))) ].min()) 

    d = {'00_04': [a_04_08], '04_08': [a_04_08], '08_12': [a_08_12], '12_16': [a_12_16],'20_24': [a_20_24]} 
    df = pd.DataFrame(data=d) 

    return df 

Gerade jetzt von einem wie folgt aussieht:

00_04 04_08 08_12 12_16 20_24 
0 21359 21359 10486 6747 14335 

Und ich will es so setzen:

  00_04 04_08 08_12 12_16 20_24 
2017-11-10 21359 21359 10486 6747 14335 

Aber auch das Hinzufügen der Ergebnisse aus meiner Liste

Antwort

1

nicht positiv, was Sie, Sie gehen aber vielleicht etwas wie folgt aus:

def create_df(dl): 
    idx = [] 
    cols = { 
     '00_04': [], 
     '04_08': [], 
     '08_12': [], 
     '12_16': [], 
     '20_24': [], 
    } 

    for date in dl: 
     col['00_04'].append(int(df_output.loc[ (df_output.index > timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday)-timedelta(hours=1))) & (df_output.index <= timezone('Europe/Berlin').localize(datetime(yyear,mmonth,dday,4)+timedelta(hours=2))) ].min())) 
     ... 

     index.append(date) 

    return pd.DataFrame(cols, index=idx) 

Es ist schwer zu sagen, wofür Sie hier sind, aber es scheint, dass Sie ein 16-24 Feld auch vermissen werden?

Hoffe, das hilft.

Verwandte Themen