pandas 如何根据多个列的最小日期创建列?

lg40wkob  于 2022-11-20  发布在  其他
关注(0)|答案(1)|浏览(132)

print (df)
      Event1     Event2     Event3
0  7/27/2014        NaN        NaN
1   3/5/2016        NaN   2/1/2013
2  5/13/2017  5/10/2013        NaN
3        NaN        NaN  4/28/2014
4        NaN  5/12/2013   3/6/2016
5        NaN        NaN        NaN

大家好,
我的pandas数据框中有3列,我想创建一个新列来显示Event 1Event 2Event 3中的最小日期。如果所有3列中都没有日期,则打印NaN,如上面屏幕截图的最后一行所示。
截图中的最后一列(新列)是预期的输出。任何建议或帮助将不胜感激!

2vuwiymt

2vuwiymt1#

使用EventDataFrame.filter筛选列,转换为日期时间并获取最小值,最后对于原始格式使用Series.dt.strftime

df['new'] = (df.filter(like='Event')
               .apply(pd.to_datetime)
               .min(axis=1)
               .dt.strftime('%m/%d/%Y'))
print (df)
      Event1     Event2     Event3         new
0  7/27/2014        NaN        NaN  07/27/2014
1   3/5/2016        NaN   2/1/2013  02/01/2013
2  5/13/2017  5/10/2013        NaN  05/10/2013
3        NaN        NaN  4/28/2014  04/28/2014
4        NaN  5/12/2013   3/6/2016  05/12/2013
5        NaN        NaN        NaN         NaN

相关问题