簡體   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