How do I tell if a column in a pandas dataframe is of type datetime? How do I tell if a column is numerical?

前端 未结 5 1926
情书的邮戳
情书的邮戳 2020-12-30 18:58

I am trying to filter the columns in a pandas dataframe based on whether they are of type date or not. I can figure out which ones are, but then would have to parse that ou

5条回答
  •  再見小時候
    2020-12-30 19:26

    I just encountered this issue and found that @charlie-haley's answer isn't quite general enough for my use case. In particular np.datetime64 doesn't seem to match datetime64[ns, UTC].

    df['date_col'] = pd.to_datetime(df['date_str'], utc=True)
    print(df.date_str.dtype)  # datetime64[ns, UTC]
    

    You could also extend the list of dtypes to include other types, but that doesn't seem like a good solution for future compatability, so I ended up using the is_datetime64_any_dtype function from the pandas api instead.

    In:

    from pandas.api.types import is_datetime64_any_dtype as is_datetime
    
    df[[column for column in df.columns if is_datetime(df[column])]]
    

    Out:

                       date_col
    0 2017-02-01 00:00:00+00:00
    1 2017-03-01 00:00:00+00:00
    2 2017-04-01 00:00:00+00:00
    3 2017-05-01 00:00:00+00:00
    

提交回复
热议问题