Pandas read_csv () анализирует несколько форматов даты и времени - PullRequest
0 голосов
/ 26 февраля 2020

Я хотел бы прочитать несколько файлов данных, которые имеют разные форматы DateTime. Но как я могу разобрать эти форматы вместе в один go?

dateparse_1 = lambda x: pd.datetime.strptime(x, "%d/%m/%Y %H:%M:%S.%f") 
dateparse_2 = lambda x: pd.datetime.strptime(x, "%Y-%m-%d %H:%M:%S.%f")
dateparse_3 = lambda x: pd.datetime.strptime(x, "%Y-%m-%d %H:%M:%S.")

for f in all_filenames:
    df = pd.read_csv(f,encoding='latin-1',low_memory=False, index_col='TimeStamp', parse_dates=True, date_parser = dateparse_1 or dateparse_2 or dateparse_3)

1 Ответ

1 голос
/ 26 февраля 2020

Вы можете комбинировать dateparse_{1,2,3}, пробуя их, пока не добьетесь успеха. Например,

def combine_date_parsers(date_parsers):
    def combined_date_parser(value):
        for date_parser in date_parsers:
            try:
                return date_parser(value)
            except ValueError:
                pass
        else:
            raise ValueError(value)
    return combined_date_parser


dateparse_1 = lambda x: pd.datetime.strptime(x, "%d/%m/%Y %H:%M:%S.%f")
dateparse_2 = lambda x: pd.datetime.strptime(x, "%Y-%m-%d %H:%M:%S.%f")
dateparse_3 = lambda x: pd.datetime.strptime(x, "%Y-%m-%d %H:%M:%S.")

date_parser = combine_date_parsers([
    dateparse_1,
    dateparse_2,
    dateparse_3,
])

pd.read_csv(
    f,
    encoding='latin-1',
    low_memory=False,
    index_col='TimeStamp',
    parse_dates=True,
    date_parser=date_parser,
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...