根据.csv文件中提供的日期列创建列

时间:2019-12-02 09:57:56

标签: python pandas csv date

我有一个.csv文件,该文件有5列,其中有一个列中有提到的日期“ date_value”,我需要根据以下内容更改其他两列“ day_of_week”和“ day_of_week_name”提到的日期。例如:

A
date_key   date_level    date_value      day_of_week   day_of_week_name
2010W01     20          01.01.2010           NaN        NaN
20100102    10          02.01.2010           7.0        Saturday
2010W02     20          03.01.2010           NaN        NaN
20100103    10          03.01.2010           1.0        Sunday
20100104    10          04.01.2010           2.0        Monday
20100105    10          05.01.2010           3.0        Tuesday
20100106    10          06.01.2010           4.0        Wednesday
20100107    10          07.01.2010           5.0        Thursday
20100108    10          08.01.2010           6.0        Friday
20100109    10          09.01.2010           7.0        Saturday
2010W03     20          10.01.2010           NaN        NaN

例如,根据 date_value 中的日期,星期日 day_of_week 1 上。同样,在每周之后,还有一行,其中 day_of_week day_of_week_name为空,因为它描述了您可以在 date_key 中看到的星期数。值其中带有W的值,例如-2010W03

我应该如何使该表填充星期数字和周名称库仑,以便在需要的任何地方用空值填充,我尝试了一下,但似乎不起作用。

range1 = [2,3,4,5,6,7,1]
days = {'2': 'Monday', '3': 'Tuesday', '4': 'Wednesday', '5': 'Thursday', '6': 'Friday', '7': 
'Saturday', '1': 'Sunday'}
print(days['2'])
def change_2018(df):
    for i in df.date_level:
    #print(i)
    if i == 10:
        for k in range1:
            for key, value in days.items():
                #print(key, value)
                df.day_of_week = k             
                df.day_of_week_name = value


return df

change_2018(table_2018) 

我还想知道是否有任何干净的方法可以执行此操作,因为此功能也运行了很长时间。

1 个答案:

答案 0 :(得分:0)

您应该能够将日期转换为datetime对象。然后,您可以使用.weekday()函数来获取工作日:

from datetime import datetime
days = {
    0: "Monday",
    1: "Tuesday",
    2: "Wednesday",
    3: "Thursday",
    4: "Friday",
    5: "Saturday",
    6: "Sunday"
}

date = datetime.strptime("01.01.2010", "%d.%m.%Y")
weekday = date.weekday()
day_name = days.get(weekday)