pandas获取每行的最大列日期时间值总和

时间:2018-03-13 18:21:14

标签: python python-3.x pandas dataframe

我试图从每行的列总和中获取最大值,并将最大值分配给新列,

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_datedatetime dtypedays_1/2/3int类型。

代码给了我

ValueError: ('Cannot add integral value to Timestamp without freq.', 'occurred at index 0')

我想知道如何获得base_line_date + days1/2/3获得的最长日期。

2 个答案:

答案 0 :(得分:1)

您可以使用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]

答案 1 :(得分:1)

你应该将你的日期*列转换为pd.Timeadelta。

你可以使用apply with lambda function

df[daylikecolumne].apply(lambda c: pd.Timedelta(c,'D'))

通过这种方式,您可以在兼容的数据类型之间添加减法,例如timedelta和datetime