如果满足特定条件,熊猫将应用价值

时间:2019-01-09 15:14:04

标签: python-3.x pandas numpy datetime

我有如下示例数据框:

{'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()非常麻烦,我希望有一种更优雅/更有效的方法。

2 个答案:

答案 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)