Вычитание даты из столбца данных pandas в linux

1

У меня есть следующее значение даты дня:

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

И pandas dataframe 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'>
  • 0
    Звучит больше как проблема версии панды / Python ...
  • 0
    @xyzjayne Я дважды проверил это, и это не ...
Показать ещё 4 комментария
Теги:
pandas
python-3.x

1 ответ

1
Лучший ответ

Поскольку я не могу прокомментировать:

Причина, по которой эта работа не работает, заключается в том, что вы пытаетесь использовать версию datetime datetime с версией datetime, source. То, что я сделал бы в вашей ситуации, - это преобразовать все в одно и то же время с помощью pd.to_datetime():

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

Я бы тоже посмотрел на это

  • 0
    Вы случайно не знаете, почему это работает для меня на моей машине с Windows, даже не a_date в pd.to_datetime() ?
  • 0
    @AnarKi извините за поздний ответ, но, к сожалению, я не = /

Ещё вопросы

Сообщество Overcoder
Наверх
Меню