linux中从数据帧列中减去日期

2024-10-01 04:59:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下datetime日期值:

a_date = datetime.date(2018,9,13)

以及具有以下列的数据帧df

df['somedates']

0      2010-07-27
1      1999-02-15
2      1997-07-15
3      2012-11-15
4      1999-02-17
5      1999-02-16
6      1999-02-17
7      2012-10-12
8      1999-09-22
9      1998-05-09
10     1998-05-09

Name: somedates, Length: 11, dtype: datetime64[ns]

我可以在我的Windows机器上执行以下操作,而且工作正常

df['somedates'] = a_date - df['somedates']

但是在ubuntu上,它会引发以下错误:

unsupported operand type(s) for -: 'DatetimeIndex' and 'datetime.date

有人能给我指出正确的方向吗?为什么它在windows上运行而在Linux上不运行?你知道吗

更多详细信息

print(type(a_date))
<class 'datetime.date'>

print(type(df['somedates']))
<class 'pandas.core.series.Series'>

print(type(df['somedates'][0]))
<class 'pandas._libs.tslib.Timestamp'>

Tags: 数据namepandasdfdatetimedatewindowstype
1条回答
网友
1楼 · 发布于 2024-10-01 04:59:59

既然我不能评论:

这不起作用的原因是,您试图将datetime的datetimes版本与datetime的pythons版本source一起使用。在你这种情况下,我要做的就是把所有的时间都转换成相同的日期pd.to\ U日期时间():

import pandas as pd
import datetime

a_date = datetime.date(2018,9,13) # we can change this to a_date = pd.to_datetime('2018-9-13')

df = pd.DataFrame()
df['somedates'] = ['2010-07-27', '1999-02-15', '1997-07-15','2012-11-15','2012-11-15','1999-02-17']

df['somedates'] = pd.to_datetime(df['somedates'])
df['somedates'] = pd.to_datetime(a_date) - df['somedates'] # if we enact the change above then we can simply do a_date - df['somedates']

display(df)
    somedates
0   2970 days
1   7150 days
2   7730 days
3   2128 days
4   2128 days
5   7148 days

我还要看看this

相关问题 更多 >