Я пытаюсь получить максимум из суммы столбцов для каждой строки и назначить максимальное значение для нового столбца,
df['due_date'] = df.apply(
lambda x: max(x['days_1'] + x['baseline_date'],
x['days_2'] + x['baseline_date'],
x['days_3'] + x['baseline_date']), axis=1)
«DF» выглядит так.
days_1 days_2 days_3 baseline_date
0 0 0 2018-01-01
12 0 0 2017_01-01
0 3 0 2016-01-01
0 0 4 2015-01-01
baseline_date
относится к datetime
dtype
, days_1/2/3
относится к типу int
.
Код дал мне
ValueError: ('Cannot add integral value to Timestamp without freq.', 'occurred at index 0')
Мне интересно, как получить максимальную дату, полученную base_line_date
+ days1/2/3
.
2 ответа
Вы можете сделать max
с axis = 1
pd.to_timedelta(df.iloc[:,:3].max(1),'D')+pd.to_datetime(df.baseline_date)
Out[437]:
0 2018-01-01
1 2017-01-13
2 2016-01-04
3 2015-01-05
dtype: datetime64[ns]
Вы должны конвертировать ваши дни * столбцы в pd.Timeadelta.
Вы можете использовать применить с лямбда-функцией
df[daylikecolumne].apply(lambda c: pd.Timedelta(c,'D'))
Таким образом, вы можете добавить вычитание между совместимыми типами данных, например, timedelta и datetime
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.