Разница между двумя датами, которые являются объектами в датафрейме - PullRequest
0 голосов
/ 30 июня 2018

Датафрейм имеет 2 даты, которые имеют тип данных «объект». StartDate и EndDate представлены в формате мм / дд / гггг.

  Name        StartDate          EndDate
  bou1        1/9/2017           1/10/2017
  bou2        12/31/2016         1/10/2017          

Выход:

  Name        StartDate          EndDate         Diff
  bou1        1/9/2017           1/10/2017       1
  bou2        12/31/2016         1/10/2017       10

Любые предложения будут оценены !!

Ответы [ 2 ]

0 голосов
/ 30 июня 2018
# Recreating your dataframe with dates stored as strings
df = pd.DataFrame({'Name'     : ['bou1', 'bou2'],               
                   'StartDate': ['01/09/2017','12/31/2016'],    
                   'EndDate'  : ['01/10/2017', '01/10/2017']}) 

# Date strings converted with pd.Datetime
df['StartDate'] = pd.to_datetime(df['StartDate'])               
df['EndDate'] = pd.to_datetime(df['EndDate'])

# .dt handles your calculation and .days outputs in days
df['Diff'] = (df['EndDate'] - df['StartDate']).dt.days          

# Just prints the columns in your order
df[['Name', 'StartDate', 'EndDate', 'Diff']]                    
0 голосов
/ 30 июня 2018

сначала нужно преобразовать в datetime для этих столбцов, а затем вычесть.

попробовать

df['startDate'] = pd.to_datetime(df['startDate'])
df['EndDate'] = pd.to_datetime(df['EndDate'])
df['difInDate'] = (abs(df['startDate'].sub(df['EndDate'], axis = 0))) / np.timedelta64(1, 'D')
print(df['difInDate'])

abs только для того, чтобы дни были положительными, потому что вы вычитаете из маленькой даты в большую дату в качестве альтернативы вы можете использовать (df['EndDate'].sub(df['StartDate'] тоже

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...