首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据阈值调整熊猫栏的日期?

如何根据阈值调整熊猫栏的日期?
EN

Stack Overflow用户
提问于 2022-08-28 19:04:52
回答 2查看 31关注 0票数 0

我有一个日期时间列的数据框架,如下所示:

代码语言:javascript
复制
  dates
0 2017-09-19
1 2017-08-28
2 2017-07-13

我想知道是否有办法在这种情况下调整日期:

  1. 如果日期在15日前,则将日期更改为上月底;
  2. ,如果日期为15或之后,则将日期更改为当前月底。

我想要的输出应该如下所示:

代码语言:javascript
复制
  dates
0 2017-09-30
1 2017-08-31
2 2017-06-30
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-28 19:36:32

使用np.where和乔希关于MonthEnd的建议,这可以简化一点。

给予:

代码语言:javascript
复制
        dates
0  2017-09-19
1  2017-08-28
2  2017-07-13

做:

代码语言:javascript
复制
from pandas.tseries.offsets import MonthEnd

# Where the day is less than 15, 
    # Give the DateEnd of the previous month.
# Otherwise, 
    # Give the DateEnd of the current month.

df.dates = np.where(df.dates.dt.day.lt(15), 
                    df.dates.add(MonthEnd(-1)), 
                    df.dates.add(MonthEnd(0)))
print(df)

# Output:

       dates
0 2017-09-30
1 2017-08-31
2 2017-06-30
票数 2
EN

Stack Overflow用户

发布于 2022-08-28 19:13:01

易于使用MonthEnd

让我们设置数据:

代码语言:javascript
复制
dates = pd.Series({0: '2017-09-19', 1: '2017-08-28', 2: '2017-07-13'})
dates = pd.to_datetime(dates)

然后:

代码语言:javascript
复制
from pandas.tseries.offsets import MonthEnd

pre, post = dates.dt.day < 15, dates.dt.day >= 15
dates.loc[pre] = dates.loc[pre] + MonthEnd(-1)
dates.loc[post] = dates.loc[post] + MonthEnd(1)

说明:首先创建掩码(prepost)。然后,根据情况,使用掩码将当前或前一个月的月结束。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73521449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档