Chcę konwertować date index dataframe do dnia tygodnia. Próbowałem wielu metod. Najpierw przekonwertuj date index do column, a następnie przekonwertuj column do datetime, a następnie użyj metody datetime.dt.dayofweek, aby przekonwertować go do dni powszednie. Kod jest następujący, jak optymalizować?

import numpy as np
import pandas as pd
import datetime

d = pd.date_range('1/1/2020', '12/31/2020').strftime('%Y-%m-%d')

data = np.random.rand(len(d)) * 100
df = pd.DataFrame(data=data, index=d)

df['weekday'] = df.index
df['weekday'] = pd.to_datetime(df.weekday).dt.dayofweek
0
jaried 13 kwiecień 2021, 16:58

1 odpowiedź

Najlepsza odpowiedź

Używając .strftime('%Y-%m-%d') na zwrotach pandas.date_range(), zmieniasz typ DatetimeIndex na ciąg. Twój format docelowy %Y-%m-%d jest taki sam z domyślnym formarem, nie musisz tego zrobić. Oto przykład:

d = pd.date_range('1/1/2020', '12/31/2020')

data = np.random.rand(len(d)) * 100
df = pd.DataFrame(data=data, index=d)

df['weekday'] = d.dayofweek
# or
df['weekday'] = df.index.dayofweek

BTW, w swoim kodzie, możesz zrobić w jednej linii jak

df['weekday'] = pd.to_datetime(df.index).dayofweek
1
Ynjxsjmh 13 kwiecień 2021, 14:27