【问题标题】:How do I extract the day of week from mm/dd/yyy in a python dataframe如何从 python 数据框中的 mm/dd/yyyy 中提取星期几
【发布时间】:2017-07-29 13:57:36
【问题描述】:

我在 python 数据框中有一个非索引列,日期为 02/03/2017。我想提取星期几并将其作为单独的列。

【问题讨论】:

  • 那么到目前为止你尝试过什么?
  • Dataframe 是一个通用术语。您是否愿意确定您正在使用的特定软件系统?
  • 对不起。我在 python 3 中使用熊猫。
  • 我还应该提到,我得到的错误是指尝试将列处理为似乎不允许的系列。对于
  • 例如,如果我写: df['DOW'] = datetime.datetime.strptime(df[Production_Date], '%mm/%m/%Y') 我会收到类似 Can '不解析类型的两个参数。我只是在这里抓住稻草。

标签: python pandas dataframe dayofweek


【解决方案1】:

首先您需要将日期转换为日期时间对象:

import datetime


date = datetime.datetime.strptime("02/03/2017", "%d/%m/%Y")
print date.weekday()

https://docs.python.org/2/library/datetime.html#module-datetime

【讨论】:

    【解决方案2】:

    您可能还对 arrow 模块感兴趣,因为它提供了很多功能和优势。在这里,我展示了它能够以两种形式为一种语言环境提供工作日名称,并以一种形式为非英语语言环境提供工作日名称。

    >>> import arrow
    >>> theDate = arrow.get('02/03/2017', 'DD/MM/YYYY')
    >>> theDate
    <Arrow [2017-03-02T00:00:00+00:00]>
    >>> theDate.weekday()
    3
    >>> theDate.format('ddd', locale='en_GB')
    'Thu'
    >>> theDate.format('dddd', locale='en_GB')
    'Thursday'
    >>> theDate.format('dddd', locale='fr_FR')
    'jeudi'
    

    【讨论】:

    • 感谢您的建议。我必须看看我是否可以将它应用到 pandas 数据框列。
    【解决方案3】:

    我找到的解决方案是一个两步过程,因为我无法找到让 weekday() 参与熊猫系列的方法。

    import pandas as pd
    
    your_df = pd.DataFrame(data={'Date': ['31/1/2018', '1/1/2018', '31/12/2018',
                                          '28/2/2016', '3/3/2035']})
    
    dt_series = pd.to_datetime(your_df['Date'], format="%d/%m/%Y")
    
    dow = []
    for dt in range(0, len(your_df)):
        dow.append(dt_series[dt].weekday())
    
    your_df.insert(1, 'Day of week', dow)
    
    print(your_df)
    

    输出应如下所示:

             Date  Day of week
    0   31/1/2018            2
    1    1/1/2018            0
    2  31/12/2018            0
    3   28/2/2016            6
    4    3/3/2035            5
    

    注意事项:

    1. 我正在使用 dd/mm/yyyy 格式。如果您的日期是美国或其他格式,您将需要更改 to_datetime() 的格式参数。
    2. Python 工作日:星期一 = 0,星期日 = 6。

    【讨论】:

      【解决方案4】:

      其实有使用pandas的解决方案。

      import pandas as pd
      
      your_df = pd.DataFrame(data={'Date': ['31/1/2018', '1/1/2018', '31/12/2018',
                                            '28/2/2016', '3/3/2035']})
      
      your_df['Date'] = pd.to_datetime(your_df['Date'], format="%d/%m/%Y")
      
      your_df['Day of week (int)'] = your_df['Date'].dt.weekday
      
      your_df['Day of week (str)'] = your_df['Date'].dt.day_name()
      
      print(your_df)
      

      更多信息在这里:Create a day-of-week column in a Pandas dataframe using Python

      根据我的其他(不太优雅的)答案的注释...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-30
        • 1970-01-01
        • 2022-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多