Самый простой способ определить, содержит ли столбец в pandas Dataframe информацию DATE или DATETIME - PullRequest
5 голосов
/ 16 июня 2020

У меня есть следующий DF:

  col1         col2
1 2017-01-03   2018-03-30 08:01:32
2 2017-01-04   2018-03-30 08:02:32

Если я сделаю df.dtypes, я получу следующий результат:

col1    datetime64[ns]
col2    datetime64[ns]
dtype: object

Однако col1 содержит только информацию о дате ( DATE), тогда как col2 содержит информацию о дате и времени (DATETIME).

Какой самый простой способ определить, содержит ли столбец информацию DATE или DATETIME?

Генерация данных:

import pandas as pd

# Generate the df
col1 = ["2017-01-03", "2017-01-04"]
col2 = ["2018-03-30 08:01:32", "2018-03-30 08:02:32"]

df = pd.DataFrame({"col1": col1, "col2": col2})

df["col1"] = pd.to_datetime(df["col1"])
df["col2"] = pd.to_datetime(df["col2"])

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Вы можете попробовать это:

def col_has_time(col):
    dt = pd.to_datetime(df[col])
    return (dt.hour == 0).all()
1 голос
/ 16 июня 2020

Согласно this SO Question, следующая функция могла бы выполнить работу:

def check_col(col):
    try:
        dt = pd.to_datetime(df[col])
        if (dt.dt.floor('d') == dt).all():
            return('Its a DATE field')
        else:
            return('Its a DATETIME field')
    except:
        return("could not parse to pandas datetime")

Однако нет более простого способа?

...