如何从python数据帧中的mm / dd / yyy中提取星期几

时间:2017-03-08 20:00:26

标签: python pandas dataframe dayofweek

我在python数据框中有一个非索引列,日期类似于02/03/2017。我想提取一周中的某一天并将其作为一个单独的专栏。

4 个答案:

答案 0 :(得分:2)

实际上有使用熊猫的解决方案。

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

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

答案 1 :(得分:0)

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

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 :(得分:0)

您可能也对 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'

答案 3 :(得分:0)

我发现的解决方案是一个两步过程,因为我还没有找到让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()的format参数。
  2. Python工作日:星期一= 0,星期日= 6。