适用于日期差异 returns NaT
apply on date difference returns NaT
我正在尝试向列表中的所有日期添加负日
def datediff(xdate):
return(xdate - timedelta(days=1))
data_ = [['tom', '2022-12-01'], ['nick', '2022-12-01'], ['juli', '2021-06-08']]
data_ = pd.DataFrame(data_, columns = ['Name', 'eventdate'])
pd.DataFrame(index=data_.eventdate, data=data_, columns=['eventdate']).apply(datediff)
但是,应该包含原始日期减 1 的 eventdate 都是 NaT。
使用 pd.Timedelta
在 DataFrame
中进行日期操作。
In [47]: data_ = [['tom', '2022-12-01'], ['nick', '2022-12-01'], ['juli', '2021-06-08']]
...: data = pd.DataFrame(data_, columns = ['Name', 'eventdate'])
In [48]: data
Out[48]:
Name eventdate
0 tom 2022-12-01
1 nick 2022-12-01
2 juli 2021-06-08
# data.eventdate is a string so we convert it to a datetime before subtracting a timedelta
In [49]: data.eventdate = data.eventdate.astype('datetime64') - pd.Timedelta('1 day')
In [50]: data
Out[50]:
Name eventdate
0 tom 2022-11-30
1 nick 2022-11-30
2 juli 2021-06-07
您通常应该尽可能避免使用 Dataframe.apply
。请参阅 了解为什么它会很慢。
我正在尝试向列表中的所有日期添加负日
def datediff(xdate):
return(xdate - timedelta(days=1))
data_ = [['tom', '2022-12-01'], ['nick', '2022-12-01'], ['juli', '2021-06-08']]
data_ = pd.DataFrame(data_, columns = ['Name', 'eventdate'])
pd.DataFrame(index=data_.eventdate, data=data_, columns=['eventdate']).apply(datediff)
但是,应该包含原始日期减 1 的 eventdate 都是 NaT。
使用 pd.Timedelta
在 DataFrame
中进行日期操作。
In [47]: data_ = [['tom', '2022-12-01'], ['nick', '2022-12-01'], ['juli', '2021-06-08']]
...: data = pd.DataFrame(data_, columns = ['Name', 'eventdate'])
In [48]: data
Out[48]:
Name eventdate
0 tom 2022-12-01
1 nick 2022-12-01
2 juli 2021-06-08
# data.eventdate is a string so we convert it to a datetime before subtracting a timedelta
In [49]: data.eventdate = data.eventdate.astype('datetime64') - pd.Timedelta('1 day')
In [50]: data
Out[50]:
Name eventdate
0 tom 2022-11-30
1 nick 2022-11-30
2 juli 2021-06-07
您通常应该尽可能避免使用 Dataframe.apply
。请参阅