Czy ktoś wie, czy można pobrać numer tygodnia z daty w uint8 zamiast w int64 domyślnie?
Teraz ja robię:
df['sales_week'] = df['sales_date'].dt.week
df.astype({'sales_week': 'uint8'})
Ale prawdopodobnie nie jest to optymalne pod względem pamięci, prawda?
Czy można określić format, używając atrybutu .week?
1 odpowiedź
Możesz go od razu przekonwertować za pomocą metody astype
.
import pandas as pd
df = pd.DataFrame({'sales_date': ['2019-11-15', '2019-11-16'], 'Z':['abc', 'def']})
df.sales_date = pd.to_datetime(df.sales_date)
df['sales_week'] = df.sales_date.dt.week.astype(pd.np.int8)
df.sales_week
# returns:
0 46
1 46
Name: sales_week, dtype: int8
Podobne pytania
Nowe pytania
python
Python to wielozadaniowy, wielozadaniowy język programowania dynamicznie typowany. Został zaprojektowany tak, aby był szybki do nauczenia się, zrozumienia i użycia oraz wymuszania czystej i jednolitej składni. Należy pamiętać, że Python 2 oficjalnie nie jest obsługiwany od 01-01-2020. Mimo to, w przypadku pytań Pythona specyficznych dla wersji, dodaj znacznik [python-2.7] lub [python-3.x]. Korzystając z wariantu Pythona (np. Jython, PyPy) lub biblioteki (np. Pandas i NumPy), należy umieścić go w tagach.
astype
, tak samo powiedzieli w pytaniu. Ich zmartwieniem jest marnowanie pamięci i mają rację: wywołanieastype
oznacza, że pandy najpierw generują kolumnęint64
, która jest następnie natychmiast odrzucana. Stąd ich pytanie o bezpośrednie uzyskanieint8
.