首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在dataframe中根据年名和月名创建日期?

如何在dataframe中根据年名和月名创建日期?
EN

Stack Overflow用户
提问于 2022-11-01 09:40:30
回答 1查看 32关注 0票数 1

我想要创建一个基于年名和月名的日期,我编写了一个在控制台中打印日期的代码。

代码:

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np

data = {'month': ['APRIL', 'MAY', 'JUNE', 'JULY', 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER', 'JANUARY', 'FEBRUARY', 'MARCH'],
    'kpi': ['SALES', 'SALES QUANTITY', 'SALES', 'SALES', 'SALES', 'SALES', 'SALES', 'SALES QUANTITY', 'SALES', 'SALES', 'SALES', 'SALES'],
    'financial_year': [2022, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023, 2023]
    }

# Create DataFrame
df = pd.DataFrame(data)
print (pd.to_datetime(df['financial_year'].astype(str)  + df['month'], format='%Y%B'))

它生成的输出如下所示:

代码语言:javascript
运行
复制
0    2022-04-01
1    2023-05-01
2    2023-06-01
3    2023-07-01
4    2023-08-01
5    2023-09-01
6    2023-10-01
7    2023-11-01
8    2023-12-01
9    2023-01-01
10   2023-02-01
11   2023-03-01

但是,我希望生成以下格式的输出:

代码语言:javascript
运行
复制
0    2022-04-30
1    2023-05-01
2    2023-06-30
3    2023-07-31
4    2023-08-31
5    2023-09-30
6    2023-10-31
7    2023-11-01
8    2023-12-31
9    2023-01-31
10   2023-02-28 
11   2023-03-31

所需产出基于以下一些条件:

如果01.

  • For是sales,那么date中的day应该是那个月份的最后一天,否则就应该是sales,4月的最后一天应该是闰年。

当所有列都是对象类型时,我需要输出。

有人能提出解决这个问题的办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-04 07:09:01

使用kpiSALES筛选行,并为月份的最后一天添加offsets.MonthEnd

代码语言:javascript
运行
复制
df['Date'] = pd.to_datetime(df['financial_year'].astype(str)  + df['month'], format='%Y%B')

df.loc[df['kpi'].eq('SALES'), 'Date'] += pd.offsets.MonthEnd(0) 
print (df)
        month             kpi  financial_year       Date
0       APRIL           SALES            2022 2022-04-30
1         MAY  SALES QUANTITY            2023 2023-05-01
2        JUNE           SALES            2023 2023-06-30
3        JULY           SALES            2023 2023-07-31
4      AUGUST           SALES            2023 2023-08-31
5   SEPTEMBER           SALES            2023 2023-09-30
6     OCTOBER           SALES            2023 2023-10-31
7    NOVEMBER  SALES QUANTITY            2023 2023-11-01
8    DECEMBER           SALES            2023 2023-12-31
9     JANUARY           SALES            2023 2023-01-31
10   FEBRUARY           SALES            2023 2023-02-28
11      MARCH           SALES            2023 2023-03-31
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74273977

复制
相关文章

相似问题

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