【问题标题】:Creating columns according to date column given in a .csv file根据 .csv 文件中给出的日期列创建列
【发布时间】:2020-03-26 22:01:44
【问题描述】:

我有一个 .csv 文件,它有 5 列,其中有一列中提到的日期为“date_value”,我需要根据提到的日期。例如:

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 中的日期,对于 Sundayday_of_week 将是 1 等等在。此外,每周之后会有一行 day_of_weekday_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) 

另外我想知道是否有任何干净的方法可以做到这一点,因为这个功能也运行了很长时间。

【问题讨论】:

    标签: python pandas csv date


    【解决方案1】:

    您应该能够将日期转换为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)
    

    【讨论】:

      猜你喜欢
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 2021-11-26
      • 2019-05-30
      • 1970-01-01
      • 2020-11-24
      相关资源
      最近更新 更多