[英]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])
或者使用map
和day_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.