Obecnie używam pythona, który próbuje podzielić kolumnę datetime na 2, jedną dla daty i jedną dla czasu, a także poprawnie sformatować kolumnę.Formatowanie zmiennych datetime daje brakujące wartości czasu jako 00:00:00. Korzystanie z Pythona
ORIGINAL DATASET
INCIDENT_DATE
12/31/2006 11:20:00 PM
12/31/2006 11:30:00 PM
01/01/2007 00:25
01/01/2007 00:10
12/31/2006 11:30:00 AM
01/01/2007 00:05
01/01/2007 00:01
12/31/2006 4:45:00 PM
12/31/2006 11:50:00 PM
**01/01/2007**
* Użyłem 2 kody, jeden sformatować kolumnę, a drugi, że dzieli go. Jednak po formatowaniu kolumnę, brakujących wartości czasu dawali 00:00:00 wartość, tutaj wskazujący czas na 12 midnight.See poniżej
po formatowaniu
2006-12-31 23:20:00
2006-12-31 23:30:00
2007-01-01 00:25:00
2007-01-01 00:10:00
2006-12-31 11:30:00
2007-01-01 00:05:00
2007-01-01 00:01:00
2006-12-31 16:45:00
2006-12-31 23:50:00
**2007-01-01 00:00:00**
kodów stosowanych:
## Format datetime column
crimeall['INCIDENT_DATE'] = pd.DatetimeIndex(crimeall['INCIDENT_DATE'])
##Split DateTime column
crimeall['TIME'],crimeall['DATE']= crimeall['INCIDENT_DATE'].apply(lambda x:x.time()), crimeall['INCIDENT_DATE'].apply(lambda x:x.date())
Czy można to zrobić bez utraty wartości czasu ustawionej na 00:00:00? Czy podczas formatowania datetime można utracić te brakujące wartości jako Nan?
Wszelkie uwagi na temat tego, w jaki sposób mogę uzyskać sformatowaną datę i czas, pokazując brakujące wartości czasu jako NaN.
co chciałbym to wygladac
2006-12-31 23:20:00
2006-12-31 23:30:00
2007-01-01 00:25:00
2007-01-01 00:10:00
2006-12-31 11:30:00
2007-01-01 00:05:00
2007-01-01 00:01:00
2006-12-31 16:45:00
2006-12-31 23:50:00
**2007-01-01 NaN**
Mając nadzieję, że istnieje sposób, aby to zrobić.
Możesz edytować swoje pytanie, ponieważ nie rozumiem, do czego służą "**".Możesz również zamieścić prawdziwe dane wejściowe, jeśli korzystasz z najnowszej wersji pandy, wtedy powinieneś być w stanie, jeśli "INCIDENT_DATE" jest już typem datetime, który po prostu robi 'crimeall ['TIME'], crimeall ['DATE'] = crimeall ['INCIDENT_DATE']. dt.time, crimeall ['INCIDENT_DATE']. dt.date' – EdChum
Jeśli dobrze rozumiem twoje pytanie, twój problem polega na tym, że twoje ciągi dat mają niepoprawny format, więc kiedy tworzysz datetimeindex lub użyj 'pd.to_datetime', a następnie brakującą część czasu (lub porcję daty), dostarczona zostanie wartość domyślna. Możesz zastąpić' 00: 00: 00' przez 'NaT' później – EdChum
Ale problematyczne jest założenie' 00: 00: 00' to 'NaT', ponieważ może być bardzo ważny. Ustalenie, które wartości są poprawne, należy wykonać ** przed ** konwersją do datetime. – JohnE