【问题标题】:How to modify date value to only keep month value如何修改日期值以仅保留月份值
【发布时间】:2023-01-13 02:13:39
【问题描述】:

我有一个 df,你可以通过运行来获得它:

import pandas as pd
from io import StringIO
    
df = """  
           case_id    scheduled_date        code
           1213       2021-08-17            1
           3444       2021-06-24            3
           4566       2021-07-20            5
          
    """
df= pd.read_csv(StringIO(df.strip()), sep='\s\s+', engine='python')

如何将scheduled_date 更改为只保留年份和月份?输出应该是:

  case_id   scheduled_date  code
0   1213    2021-08         1
1   3444    2021-06         3
2   4566    2021-07         5

【问题讨论】:

  • pd.to_datetime(df['schedule_date']).dt.strftime('%Y-%m')
  • @QuangHoang 它有效,谢谢,你能把它作为答案发布,以便我检查吗?

标签: python pandas dataframe


【解决方案1】:

将日期转换为日期时间并以这种方式访问​​月份

df['month'] = pd.to_datetime(df['scheduled_date']).dt.month

   case_id scheduled_date  code  month
0     1213     2021-08-17     1      8
1     3444     2021-06-24     3      6
2     4566     2021-07-20     5      7

【讨论】:

  • 谢谢回复,请问如何保存年月?
  • 对不起,错过了那部分。我会更新
【解决方案2】:

您可以使用字符串解析来删除月份中的日期(我假设您需要字符串,因为预期输出中的日期不存在):

df["scheduled_date"].str.split("-").str[:2].str.join("-").astype(str)

这输出:

   case_id scheduled_date  code
0     1213        2021-08     1
1     3444        2021-06     3
2     4566        2021-07     5

【讨论】:

    【解决方案3】:

    你也可以试试这个:

    df['scheduled_date'] = pd.to_datetime(df.scheduled_date, format='%Y-%m-%d').dt.strftime('%Y-%m')
    
    
       case_id scheduled_date  code
    0     1213        2021-08     1
    1     3444        2021-06     3
    2     4566        2021-07     5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多