查找大Pandas中对象和时间日期字段之间的差异

2024-03-29 06:51:38 发布

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

我有一个熊猫数据帧“dfu OUT”如下。我正在使用python 2.7-

>>> df_OUT.dtypes
TRX_DATE              datetime64[ns]
ACTUAL_DATE_CLOSED            object

数据框中的值如下所示-

>>> df_OUT.head(5)
    TRX_DATE   ACTUAL_DATE_CLOSED
0 1995-09-08  4712-12-31 00:00:00
2 2003-06-30  4712-12-31 00:00:00
3 2003-06-30  4712-12-31 00:00:00
4 2003-06-30  4712-12-31 00:00:00
6 1999-08-31  2099-08-31 00:00:00

现在我想找出“TRX\u DATE”和“ACTUAL\u DATE\u CLOSED”之间的区别,用数字表示,有天部分和没有天部分。你知道吗

我试过下面的-

df_FINAL_RESULTS['TRX_DATE']-df_FINAL_RESULTS['ACTUAL_DATE_CLOSED'].map(lambda x: x.strftime('%Y-%m-%d'))

这给了我一个错误-

TypeError: incompatible type [object] for a datetime/timedelta operation

你能给我同样的指导吗?你知道吗

谢谢。你知道吗


Tags: 数据dfdateobjectoutheadresultsfinal
1条回答
网友
1楼 · 发布于 2024-03-29 06:51:38

您的问题是熊猫时间戳的最大日期是2261年。我们需要使用pythondatetime.date日期构造。你知道吗

# this is not nice data - well past pandas.Timestamp.max
# let's get it as strings into a pandas DataFrame
data = """index, TRX_DATE,   ACTUAL_DATE_CLOSED
0,   1995-09-08,  4712-12-31 00:00:00
2,   2003-06-30,  4712-12-31 00:00:00
3,   2003-06-30,  4712-12-31 00:00:00
4,   2003-06-30,  4712-12-31 00:00:00
6,   1999-08-31,  2099-08-31 00:00:00
"""
from StringIO import StringIO # import from io for Python 3
df = pd.read_csv(StringIO(data), header=0, sep=',', index_col=0, 
    skipinitialspace=True, dtype={'ACTUAL_DATE_CLOSED': object})

# convert to python datetime.date - will do in new columns
import datetime as dt
df['closed'] = [dt.datetime.strptime(x, '%Y-%m-%d %H:%M:%S', ).date() 
    for x in df['ACTUAL_DATE_CLOSED']]
df['transaction'] = [dt.datetime.strptime(x, '%Y-%m-%d', ).date() 
    for x in df['TRX_DATE']]

# find the difference between the two dates
df['difference'] = df['closed'] - df['transaction'] 

相关问题 更多 >