Изменить формат даты для указанных c ячеек в Pandas - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю с большим набором данных (более 2 миллионов строк × 10 столбцов), в котором есть столбец даты. Некоторые строки отформатированы правильно (например, 2020/04/08), но я хочу изменить формат других, которые не (конкретно, они отформатированы как 20200408).

Я хочу изменить формат те, которые ошибочны, но я не хочу перебирать все строки.

Обычно для небольшого набора данных я бы сделал

for i in range (0,len(df)):
    cell=str(df.iloc[i]['date'])
    if len(cell)==8:
        df.iat[i, df.columns.get_loc('date')] = datetime.strptime(cell, '%Y%m%d').strftime('%Y-%m-%d')

, но я знаю, что это далеко не оптимально.

Как я могу использовать силу pandas, чтобы избежать l oop здесь?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020

Попробуйте

df['datetime'] = df['datetime'].apply(lambda x: x.to_datetime())
0 голосов
/ 08 апреля 2020

Отфильтруйте строки по Series.str.len, затем выберите столбец по DataFrame.loc и замаскируйте, преобразуйте в datetime по to_datetime и сохраните в произвольном формате Series.dt.strftime:

m = df['date'].str.len() == 8
df.loc[m, 'date'] = pd.to_datetime(df.loc[m, 'date'], format='%Y%m%d').dt.strftime('%Y-%m-%d')
...