#python #json #pandas #datetime #datetime-format
Вопрос:
поэтому у меня возникли большие проблемы с получением столбца фрейма данных pandas для чтения как dtype datetime64[ns] после сохранения в формате json. Я перепробовал почти все, что видел в Интернете, pd.datetime(обмен, формат), astype(datetime64[ns]), dateformat = ‘iso’ и т. Д. Это странно и очень расстраивает, так как все мои другие кадры данных со столбцами даты, сохраненные в виде файлов json, правильно считываются с типом dtype как datetime64[ns]. Я был бы очень признателен за некоторую помощь
Вот последние несколько строк моего кода, в которых я создаю фрейм данных и что он возвращает:
player = pd.DataFrame(full, index = list(range(len(full))), columns = ['Name', 'Handedness', 'Height', 'Bday'])
player.Height = player.Height.str[:-2]
player.Height = pd.to_numeric(player.Height)
player.Bday = pd.to_datetime(player.Bday, format = '%d/%m/%Y')
player = player.reset_index(drop = True)
player.to_json(f'../../Datasets/Singles_players/Player_Traits/{Event}_players.json', date_format = 'iso')
print(player.info())
print(player.head())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 25 entries, 0 to 24
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 25 non-null object
1 Handedness 25 non-null object
2 Height 25 non-null float64
3 Bday 25 non-null datetime64[ns]
dtypes: datetime64[ns](1), float64(1), object(2)
memory usage: 928.0 bytes
None
Name Handedness Height Bday
0 KENTO MOMOTA Left 175.0 1994-09-01
1 VIKTOR AXELSEN Right 194.0 1994-01-04
2 ANDERS ANTONSEN Right 183.0 1997-04-27
3 CHOU TIEN CHEN Right 180.0 1990-01-08
4 ANTHONY SINISUKA GINTING Right 171.0 1996-05-11
Все хорошо, НО вот что происходит, когда я читаю файл:
player = pd.read_json('../Datasets/Singles_Players/Player_Traits/MS_players.json')
print(player.info())
print(player.head())
<class 'pandas.core.frame.DataFrame'>
Int64Index: 25 entries, 0 to 24
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Name 25 non-null object
1 Handedness 25 non-null object
2 Height 25 non-null int64
3 Bday 25 non-null object
dtypes: int64(1), object(3)
memory usage: 1000.0 bytes
None
Name Handedness Height Bday
0 KENTO MOMOTA Left 175 1994-09-01T00:00:00.000Z
1 VIKTOR AXELSEN Right 194 1994-01-04T00:00:00.000Z
2 ANDERS ANTONSEN Right 183 1997-04-27T00:00:00.000Z
3 CHOU TIEN CHEN Right 180 1990-01-08T00:00:00.000Z
4 ANTHONY SINISUKA GINTING Right 171 1996-05-11T00:00:00.000Z
Комментарии:
1. трудно сказать, не видя всех данных. что происходит, когда вы конвертируете в datetime после импорта? меняется ли он на datetime64[ns] или выдает ошибку? возможно, где-то в ваших данных у вас неудачная дата, которую панды не могут вычислить, поэтому она считывает все как объект???
2. Что произойдет, если вы сделаете это:
player = pd.read_json('../Datasets/Singles_Players/Player_Traits/MS_players.json', convert_dates=True)
?