python - 如何从一组日期列中获取最大日期值
问题描述
这是样本数据:
import pandas as pd
d = {'name': ['john', 'tom', 'phill', 'nero', 'bob', 'rob'], 'date1' :['2015-10-05', '2015-01-05', '2015-07-06', '2015-10-06', '2015-10-06', '2015-12-08'], 'date2' :['2015-10-05', '2015-01-05', '2015-07-06', '2015-08-06', '2015-09-06', '2015-12-08'], 'date3' :['2015-07-05', '2015-11-05', '2015-07-06', '2015-11-06', '2015-05-06', '2015-05-08']}
df2 = pd.DataFrame(data = d)
df2['date1'] = pd.DatetimeIndex(df2['date1'])
df2['date2'] = pd.DatetimeIndex(df2['date2'])
df2['date3'] = pd.DatetimeIndex(df2['date3'])
这是桌子
问题 1:我想创建一个新列 max_date,每行都有最大日期值。我以为我可以创建这些列的列表,然后对它们应用 max ,但它没有用。我找到了 numpy.amax(),但无法让它工作。
问题 2:我必须使用列名来指定这些列,不能使用 df2[ , 0:2] 等列的位置索引
问题 2 的更新- 当我说“使用列名”时 - 我的意思是我有一个列名列表,我需要像 [date1, date2, date3] 一样使用它。抱歉,如果我的帖子不清楚。
解决方案
select_dtypes
无论命名约定如何,这都适用于所有日期时间列。
df2.assign(max_date=df2.select_dtypes('datetime').max(1))
date1 date2 date3 name max_date
0 2015-10-05 2015-10-05 2015-07-05 john 2015-10-05
1 2015-01-05 2015-01-05 2015-11-05 tom 2015-11-05
2 2015-07-06 2015-07-06 2015-07-06 phill 2015-07-06
3 2015-10-06 2015-08-06 2015-11-06 nero 2015-11-06
4 2015-10-06 2015-09-06 2015-05-06 bob 2015-10-06
5 2015-12-08 2015-12-08 2015-05-08 rob 2015-12-08
推荐阅读
- cognos - 如何在 Cognos 11 中显示数据标签值
- swift - 引用 Swift 包中的私有源 url
- javascript - IE 11-SCRIPT1002 中的 Word 加载项错误:polyfills.js 中的语法错误
- javascript - React-Native 大中间按钮被标签栏截断
- javascript - 当我“复制”一个文件时,我在哪里检索文件名和路径?
- jquery - 轮播控制按钮仅适用于一页
- algorithm - 将 StartIndex/EndIndex 转换为 PageNumber/PageSize
- python - 如何在每行的不同列号处对数据框进行切片?
- python - 如何从 Instagram 检索其 API 中不存在的数据
- azure-devops - 针对 Windows 运行 ansible playbook,然后启动另一个 Playbook