我有如下示例数据框:
{'Plan Date': {23186: nan,
18533: nan,
17980: nan,
28559: nan,
22587: 1572480000000000000,
22522: 1580428800000000000,
16639: 1572480000000000000,
14304: 1572480000000000000},
'Support Date': {23186: Timestamp('2020-12-31 00:00:00'),
18533: Timestamp('2022-03-31 00:00:00'),
17980: Timestamp('2022-03-31 00:00:00'),
28559: Timestamp('2019-02-28 00:00:00'),
22587: Timestamp('2019-07-31 00:00:00'),
22522: Timestamp('2019-07-31 00:00:00'),
16639: Timestamp('2019-10-31 00:00:00'),
14304: Timestamp('2019-10-31 00:00:00')},
'Plan Deadline': {23186: NaT,
18533: NaT,
17980: NaT,
28559: NaT,
22587: Timestamp('2019-10-31 00:00:00'),
22522: Timestamp('2020-01-31 00:00:00'),
16639: Timestamp('2019-10-31 00:00:00'),
14304: Timestamp('2019-10-31 00:00:00')}}
仅在填充计划截止日期列的情况下,我想使用位于同一数据框中其他列的2个日期中的最大值填充计划日期列。使用np.where()非常麻烦,我希望有一种更优雅/更有效的方法。
答案 0 :(得分:1)
您可以避免使用[a-zA-Z0-9_-]*
以获得更好的性能,并为每个条件分配apply
值:
max
答案 1 :(得分:0)
我找到了一种方法(在朋友的帮助下),省略了np.where和复杂的条件:
data['Plan Date'] = data[['Support Date', 'Plan Deadline']].apply(lambda x: pd.NaT if pd.isnull(x[1]) else max(x), axis=1)