Περισσότερα
Επιλογή γραμμών DataFrame μεταξύ δύο ημερομηνιών
Δημιουργώ ένα DataFrame από ένα csv ως εξής:
stock = pd.read_csv('data_in/' + filename + '.csv', skipinitialspace=True)
Το DataFrame έχει μια στήλη ημερομηνίας. Υπάρχει τρόπος να δημιουργήσω ένα νέο DataFrame (ή απλά να αντικαταστήσω το υπάρχον) το οποίο να περιέχει μόνο γραμμές με τιμές ημερομηνίας που εμπίπτουν σε ένα καθορισμένο εύρος ημερομηνίας ή μεταξύ δύο καθορισμένων τιμών ημερομηνίας;
163
3
Υπάρχουν δύο πιθανές λύσεις:
df[start_date : end_date]
Χρησιμοποιώντας μια μάσκα boolean:
Βεβαιωθείτε ότι
df['date']
είναι μια σειρά με τύπο dtypedatetime64[ns]
:Κάντε μια μάσκα boolean. Οι ημερομηνίες
start_date
καιend_date
μπορούν να είναιdatetime.datetime
,np.datetime64
s,pd.Timestamp
s, ή ακόμη και συμβολοσειρές datetime:Θεωρώ ότι η καλύτερη επιλογή θα είναι να χρησιμοποιήσετε τους άμεσους ελέγχους αντί να χρησιμοποιήσετε τη λειτουργία loc:
Μπορείτε να χρησιμοποιήσετε τη μέθοδο
isin
στη στήληdate
ως εξήςdf[df["date"].isin(pd.date_range(start_date, end_date))]
Σημείωση: Αυτό λειτουργεί μόνο με ημερομηνίες (όπως ζητάει η ερώτηση) και όχι με χρονοσφραγίδες.
Παράδειγμα:
το οποίο δίνει