python - 如何从数据框的多列中获取最近的日期?
问题描述
我需要两个col
第一个显示最近的日期,第二个显示名称col
d = {'col1': ["id1","id2"] 'Stage 1': [26-01-2021, 04-01-2021],'Stage 2': [27-01-2021, 02-10-2025]}
df = pd.DataFrame(data=d)
df
图片参考
实际的
要求
我试过了
date=datetime.date.today()
idx = plc.index[df[['Stage 1','Stage 2']].index.get_loc(date,
method='nearest')]
解决方案
将日期转换为日期时间后,您可以将其传递给一个函数,该函数一次填充两个新列:
import pandas
import datetime
d = {'col1': ["id1","id2"], 'Stage 1': ['26-01-2021', '04-01-2021'],'Stage 2': ['27-01-2021', '02-10-2025']}
df = pd.DataFrame(data=d)
df['Stage 1'] = pd.to_datetime(df['Stage 1'], format='%d-%m-%Y')
df['Stage 2'] = pd.to_datetime(df['Stage 2'], format='%d-%m-%Y')
date=pd.to_datetime(datetime.date.today())
def get_date(row):
date_range = row[['Stage 1', 'Stage 2']]
closest_date_key = abs(date - date_range).argmin()
closest_date = date_range[closest_date_key]
column_name = date_range.keys()[closest_date_key]
return pd.Series((closest_date, column_name))
df[['Requirement 1', 'Requirement 2']] = df.apply(lambda row:get_date(row), axis=1)
输出:
| | col1 | Stage 1 | Stage 2 | Requirement 1 | Requirement 2 |
|---:|:-------|:--------------------|:--------------------|:--------------------|:----------------|
| 0 | id1 | 2021-01-26 00:00:00 | 2021-01-27 00:00:00 | 2021-01-27 00:00:00 | Stage 2 |
| 1 | id2 | 2021-01-04 00:00:00 | 2025-10-02 00:00:00 | 2021-01-04 00:00:00 | Stage 1 |
推荐阅读
- java - 使用嵌套目录将文件名转换为完整目录路径的优化方法用于大文件存储
- java - 从存储库中解析插件“spring:boot”的版本时出错
- java - Cucable 插件:如何避免运行“[CUCABLE:FEATURE].feature”(java 模板文件)?
- javascript - React 组件只更新一次
- typescript - 无法在 Typescript 中创建 DOMPoint
- powershell - Powershell - 根据修改时间同步文件
- powershell - 使用函数时无法查看新的 AD 属性
- javascript - 无法在使用 Array.filter 和 Vanilla JavaScript 的函数中输出对象一次
- java - HttpClientBuilder 问题:无法初始化类 sun.security.ssl.SSLContextImpl$CustomizedTLSContext
- python - 从 python 集合中删除多个条目