繁体   English   中英

从 Python dataframe 中的 integer 检索工作日名称

[英]Retrieving weekday name from an integer in a Python dataframe

我想将包含工作日整数的 dataframe 的列转换为其相应的工作日名称。 所以 0 应该变成星期一,1 星期二等等。

我试图将整数转换为日期时间格式,但它不起作用。 go 最好的方法是什么?

data = {'weekday_number': [1, 2, 0, 3, 4, 5, 6, 3, 2, 5, 4, 5]}
df = pd.DataFrame(data)

df['weekday_name'] = pd.to_datetime(df['weekday_number']).dt.strftime('%A')

为此使用map 首先,创建一个字典来映射日期和他们的数字

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

然后

df['weekday_name'] = df['weekday_number'].map(days)

您可以使用date对象进行转换,方法是使用您的工作日编号作为timedelta日期的时间增量:

import pandas as pd
from datetime import date, timedelta

data = {'weekday_number': [1, 2, 0, 3, 4, 5, 6, 3, 2, 5, 4, 5]}
df = pd.DataFrame(data)

df['weekday_name'] = df['weekday_number'].apply(lambda w:(date(2021, 2, 1) + timedelta(days = w)).strftime('%A'))

print(df)

Output

    weekday_number weekday_name
0                1      Tuesday
1                2    Wednesday
2                0       Monday
3                3     Thursday
4                4       Friday
5                5     Saturday
6                6       Sunday
7                3     Thursday
8                2    Wednesday
9                5     Saturday
10               4       Friday
11               5     Saturday

您还可以使用calendar中的day_name数组:

from calendar import day_name

df['weekday_name'] = df['weekday_number'].apply(lambda w:day_name[w])

或者使用mapday_name ,将数组转换为字典:

df['weekday_name'] = df['weekday_number'].map(dict(enumerate(day_name)))

结果与上图相同。

如果没有库,您最好根据具体情况对其进行编程:

for i in range(len(array)):
    if(array[i] == 0):
        array[i] = "Monday"
    elif(array[i] == 1):
        array[i] = "Tuesday"
    ...

您还可以使用日历模块。

import calendar
for i in range(len(array)):
    array[i] = calendar.day_name[array[i]]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM