gpt4 book ai didi

python - 无法从一个日期时间列中减去另一列,减去操作不能使用类型为 dtype ('S1' ) 和 dtype ('
转载 作者:太空宇宙 更新时间:2023-11-03 20:43:40 25 4
gpt4 key购买 nike

我有两个 pandas 列,都转换为日期时间格式,并且无法从另一个中减去一个。

df['date_listed'] = pd.to_datetime(df['date_listed'], errors='coerce').dt.floor('d')
df['date_unconditional'] = pd.to_datetime(df['date_unconditional'], errors='coerce').dt.floor('d')

print df['date_listed'][:5]
print df['date_unconditional'][:5]

0 2013-01-01
1 2013-01-01
2 2015-04-08
3 2016-03-24
4 2016-04-27
Name: date_listed, dtype: datetime64[ns]
0 2018-10-15
1 2018-06-12
2 2018-08-28
3 2018-08-29
4 2018-10-29
Name: date_unconditional, dtype: datetime64[ns]

格式似乎是正确的,可以进行减法,但后来我得到了这个错误:

df['date_listed_to_sale'] = (df['date_sold'] - df['date_listed']).dt.days
print df['date_listed_to_sale'][:5]



TypeErrorTraceback (most recent call last)
<ipython-input-139-85a5efbde0f1> in <module>()
----> 1 df['date_listed_to_sale'] = (df['date_sold'] - df['date_listed']).dt.days
2 print df['date_listed_to_sale'][:5]

/Users/virt_env/virt1/lib/python2.7/site-packages/pandas/core/ops.pyc in wrapper(left, right)
1581 rvalues = rvalues.values
1582
-> 1583 result = safe_na_op(lvalues, rvalues)
1584 return construct_result(left, result,
1585 index=left.index, name=res_name, dtype=None)

/Users/virt_env/virt1/lib/python2.7/site-packages/pandas/core/ops.pyc in safe_na_op(lvalues, rvalues)
1531 if is_object_dtype(lvalues):
1532 return libalgos.arrmap_object(lvalues,
-> 1533 lambda x: op(x, rvalues))
1534 raise
1535

pandas/_libs/algos.pyx in pandas._libs.algos.arrmap()

/Users/virt_env/virt1/lib/python2.7/site-packages/pandas/core/ops.pyc in <lambda>(x)
1531 if is_object_dtype(lvalues):
1532 return libalgos.arrmap_object(lvalues,
-> 1533 lambda x: op(x, rvalues))
1534 raise
1535

TypeError: ufunc subtract cannot use operands with types dtype('S1') and dtype('<M8[ns]')

我添加了errors='coerce',认为它可以解决问题,但事实并非如此。我希望得到一些帮助。

最佳答案

我认为您需要更改格式才能获得时间戳的差异。

例如:

fmt = '%Y-%m-%d'
date_listed = datetime.datetime.strptime('2013-01-01', fmt)
date_unconditional = datetime.datetime.strptime('2018-10-15', fmt)
print("{0} years, {1} months, {2} days" .format((b.year-a.year),(b.month-a.month),(b.day-a.day)))

o/p:

5 years, 0 months, 4 days

关于python - 无法从一个日期时间列中减去另一列,减去操作不能使用类型为 dtype ('S1' ) 和 dtype ('<M8[ns]' ) 的操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56721424/

25 4 0

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com