2024-09-27 00:20:47 发布
网友
我有一个日期栏,价格指数如下
我想提取以12-31结尾的日期。我怎么做
我试过使用data.index.loc['*-12-31]它不起作用
data.index.loc['*-12-31]
由于这是date str.contains或startswith或endswith不起作用
有没有办法做到这一点
谢谢
如果我们的目标是在不修改DataFrame内容的情况下从DataFrame中提取相关日期,我们可以这样做:
案例1:“日期”列已采用字符串格式,请使用:
df[df['Date'].str.endswith('12-31')]
案例2:“日期”列已采用日期时间格式,请使用:
df[df.assign(Date=df['Date'].astype(str))['Date'].str.endswith('12-31')]
两者都根据当前数据类型提供所需的提取输出,而无需修改数据帧
如果希望自动提取业务年度结束时的条目,可以尝试以下代码。这是供您参考的,您可能需要进一步微调它以清理一些中间列
df['Date1'] = pd.to_datetime(df['Date']) df['BYearEnd'] = pd.to_datetime(df['Date1'].dt.year.astype(str) + '-12-01') + pd.offsets.BMonthEnd(1)
在这里,我们创建了临时列Date1和BYearEnd,其值与列Date对应。列BYearEnd包含列Date中各个日期的业务年度结束日期
Date1
BYearEnd
Date
然后,我们可以使用以下代码提取相关日期:
df[df['Date1'] == df['BYearEnd']]
将日期列转换为datetime数据类型
datetime
df['Date'] = pd.to_datetime(df['Date'])
逐月逐日过滤
df.loc[(df.Date.dt.month == 12) & (df.Date.dt.day == 31)]
输出
Date Price 1 2010-12-31 25 3 2013-12-31 28 5 2016-12-31 28 8 2020-12-31 20
如果我们的目标是在不修改DataFrame内容的情况下从DataFrame中提取相关日期,我们可以这样做:
案例1:“日期”列已采用字符串格式,请使用:
案例2:“日期”列已采用日期时间格式,请使用:
两者都根据当前数据类型提供所需的提取输出,而无需修改数据帧
编辑
如果希望自动提取业务年度结束时的条目,可以尝试以下代码。这是供您参考的,您可能需要进一步微调它以清理一些中间列
在这里,我们创建了临时列
Date1
和BYearEnd
,其值与列Date
对应。列BYearEnd
包含列Date
中各个日期的业务年度结束日期然后,我们可以使用以下代码提取相关日期:
将日期列转换为
datetime
数据类型逐月逐日过滤
输出
相关问题 更多 >
编程相关推荐