2017-09-13 2 views
1

Ich bin neu in Python und ich habe einen Datensatz S2 einschließlich Daten. Wenn ich den Befehl:So löschen Sie Datenpunkte aus dem Index

available_datapoints = S2.index, 

dann

print(available_datapoints) 

ergibt:

<class 'pandas.tseries.index.DatetimeIndex'> 
[2017-05-07 00:00:00+00:00, ..., 2017-07-27 23:50:00+00:00] 
Length: 11808, Freq: 10T, Timezone: UTC stop 

Doch statt 2017-05-07 00:00:00+00:00 möchte ich 2017-11-07 00:00:00+00:00 und statt 2017-07-27 23:50:00+00:00 starten, möchte ich 2017-07-22 23:50:00+00:00 stoppen .

Weiß jemand, wie ich das ändere?

Antwort

1

Ich glaube, Sie DataFrame.truncate verwenden können:

#Sample data 
S2 = pd.DataFrame({'a': range(11808)}, 
        index=pd.date_range(start='2017-05-07',periods=11808, freq='10T')) 
print (S2.head()) 
        a 
2017-05-07 00:00:00 0 
2017-05-07 00:10:00 1 
2017-05-07 00:20:00 2 
2017-05-07 00:30:00 3 
2017-05-07 00:40:00 4 

print (S2.tail()) 
         a 
2017-07-27 23:10:00 11803 
2017-07-27 23:20:00 11804 
2017-07-27 23:30:00 11805 
2017-07-27 23:40:00 11806 
2017-07-27 23:50:00 11807 

S2 = S2.truncate(before='2017-07-11', after='2017-07-22 23:50:00') 
print (S2.head()) 
         a 
2017-07-11 00:00:00 9360 
2017-07-11 00:10:00 9361 
2017-07-11 00:20:00 9362 
2017-07-11 00:30:00 9363 
2017-07-11 00:40:00 9364 

print (S2.tail()) 
         a 
2017-07-22 23:10:00 11083 
2017-07-22 23:20:00 11084 
2017-07-22 23:30:00 11085 
2017-07-22 23:40:00 11086 
2017-07-22 23:50:00 11087 
0

Unter der Annahme, dass Sie wirklich auf '2017.07.11' starten wollen anstelle von '2017.11.07' (die

SETUP

: ist nach dem enddate von '2017.07.23'), können Sie Partial String Indexing verwenden
df = pd.DataFrame(index = pd.date_range('2017-05-07 00:00:00+00:00','2017-07-27 23:50:00+00:00', freq='10T')) 
print(df.index) 

DatetimeIndex(['2017-05-07 00:00:00+00:00', '2017-05-07 00:10:00+00:00', 
       '2017-05-07 00:20:00+00:00', '2017-05-07 00:30:00+00:00', 
       '2017-05-07 00:40:00+00:00', '2017-05-07 00:50:00+00:00', 
       '2017-05-07 01:00:00+00:00', '2017-05-07 01:10:00+00:00', 
       '2017-05-07 01:20:00+00:00', '2017-05-07 01:30:00+00:00', 
       ... 
       '2017-07-27 22:20:00+00:00', '2017-07-27 22:30:00+00:00', 
       '2017-07-27 22:40:00+00:00', '2017-07-27 22:50:00+00:00', 
       '2017-07-27 23:00:00+00:00', '2017-07-27 23:10:00+00:00', 
       '2017-07-27 23:20:00+00:00', '2017-07-27 23:30:00+00:00', 
       '2017-07-27 23:40:00+00:00', '2017-07-27 23:50:00+00:00'], 
       dtype='datetime64[ns, UTC]', length=11808, freq='10T') 

Nun verwenden Teilstring Indizierung mit Slicing:

df1 = df['2017-07-11':'2017-07-22 23:50:00'] 
print(df_1.index) 

Ausgang: ein kleineren Datenrahmen mit der Zeit vor 2017.07.11 und nach 2017.07.22 23.50 fielen gelassen:

DatetimeIndex(['2017-07-11 00:00:00+00:00', '2017-07-11 00:10:00+00:00', 
       '2017-07-11 00:20:00+00:00', '2017-07-11 00:30:00+00:00', 
       '2017-07-11 00:40:00+00:00', '2017-07-11 00:50:00+00:00', 
       '2017-07-11 01:00:00+00:00', '2017-07-11 01:10:00+00:00', 
       '2017-07-11 01:20:00+00:00', '2017-07-11 01:30:00+00:00', 
       ... 
       '2017-07-22 22:20:00+00:00', '2017-07-22 22:30:00+00:00', 
       '2017-07-22 22:40:00+00:00', '2017-07-22 22:50:00+00:00', 
       '2017-07-22 23:00:00+00:00', '2017-07-22 23:10:00+00:00', 
       '2017-07-22 23:20:00+00:00', '2017-07-22 23:30:00+00:00', 
       '2017-07-22 23:40:00+00:00', '2017-07-22 23:50:00+00:00'], 
       dtype='datetime64[ns, UTC]', length=1728, freq='10T') 
Verwandte Themen