繼似乎在某些情況下至少工作:如何檢查熊貓系列是否包含時間戳?
series.dtype == np.dtype('<M8[ns]')
,但它並不十分好看,我不知道,如果它的工作原理總是(所有()種時間戳的?)。
是否有更好的方式來測試列是否包含時間戳?
繼似乎在某些情況下至少工作:如何檢查熊貓系列是否包含時間戳?
series.dtype == np.dtype('<M8[ns]')
,但它並不十分好看,我不知道,如果它的工作原理總是(所有()種時間戳的?)。
是否有更好的方式來測試列是否包含時間戳?
試試這個它應該工作:
pd.core.dtypes.common.is_datetime_or_timedelta_dtype(series)
如果你通過pd.core.dtypes.common.is_
你會發現檢查時間戳很多選擇。如果你想結合他們,那麼你可以使用邏輯運算符,如:
pd.core.dtypes.common.is_datetime64_ns_dtype(ser)|pd.core.dtypes.common.is_timedelta64_ns_dtype(ser)
@ shivsn的答案是更簡單,最有可能更好。儘管如此,這可能是一個很難的方法,但可能會提供信息。
有關dtypes的更多詳細信息,請參閱here。但簡而言之,dtype字符串的第二個字符應該是'M'表示Datetime,'m'表示Timedelta。因此,您可以測試dtype.str[1] == 'M'
以僅檢測Datetime或dtype.str[1].lower() == 'm'
以檢測Datetime或Timedelta。
>>> dr = pd.date_range('1-1-2017',periods=4,freq='d')
>>> df = pd.DataFrame({ 'i':range(3), 'x':[1.1,2.2,3.3],
'ts':dr[:3], 'td':dr[1:]-dr[:3] })
i td ts x
0 0 1 days 2017-01-01 1.1
1 1 1 days 2017-01-02 2.2
2 2 1 days 2017-01-03 3.3
>>> for v in df.columns:
print('\ncolumn ' + v + ': ')
print('dtype.str: ', df[v].dtype.str)
print('dtype: ', df[v].dtype)
print('timestamp? ', df[v].dtype.str[1] == 'M')
column i:
dtype.str: <i8
dtype: int64
timestamp? False
column td:
dtype.str: <m8[ns]
dtype: timedelta64[ns]
timestamp? False
column ts:
dtype.str: <M8[ns]
dtype: datetime64[ns]
timestamp? True
column x:
dtype.str: <f8
dtype: float64
timestamp? False