Разбор несовместимых времен с пандами - PullRequest
0 голосов
/ 23 февраля 2019

Я объединяю несколько файлов Excel вместе с помощью панд с кодом ниже.У меня проблема с преобразованием времени в столбце «время».Каждая электронная таблица отформатирована по-разному, а некоторые имеют время в виде строк «0900», а некоторые отформатированы как 9:00.Мне нужно, чтобы они были строками или временем.

Я попробовал следующий код:

df_merge.assign(newtime = pd.to_datetime(df_merge.time).dt.time)

Это преобразует значения строки "0900" в 9:00, но сбрасывает все значения времени 9:00 в NaN ...Как я могу иметь дело с разницей в типе данных здесь?

df_merge = pd.DataFrame()
for f in os.listdir(path):
    try:
        df = pd.read_excel(path+"/"+f, header = None, skiprows = 1, 
                        names = ['sys_name','sys_no', 'date','time',
                                    'location','collected_by','date_set','date_comp',
                                    'smpl_type','total','fecal','cl_res','comment','lab_no'],
                        dtype = {'time':str})
        if len(df.columns) != 14:
            print(f, "is not formatted properly. It has", len(df.columns), "row(s) when it should have 14.")
        else:
            df_merge = df_merge.append(df, ignore_index=True)
    except Exception as e:
        print(e)

Я также попытался преобразовать столбец в строку и проанализировать с помощью dateutil.parser:

df_merge['time'].apply(lambda x: parse(str(x)))

Но длястроки, отформатированные как «0900», я получил 1325-02-22 00: 00: 00

Где время - это год в этой дате.

1 Ответ

0 голосов
/ 23 февраля 2019

Когда я хочу преобразовать дату и время в строку, я буду использовать конвертеры вместо dtypes:

df = pd.read_excel(path+"/"+f, header = None, skiprows = 1, 
                    names = ['sys_name','sys_no', 'date','time',
                   'location','collected_by','date_set','date_comp',
                   'smpl_type','total','fecal','cl_res','comment','lab_no'],
                    converters={'time': str})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...