【发布时间】:2020-03-14 20:24:40
【问题描述】:
有人知道是否可以在 uint8 而不是 int64 中默认获取日期的周数?
现在我做:
df['sales_week'] = df['sales_date'].dt.week
df.astype({'sales_week': 'uint8'})
但是,它可能不是最佳内存,是吗?
使用.week属性时是否可以指定格式?
【问题讨论】:
标签: python pandas datetime memory format
有人知道是否可以在 uint8 而不是 int64 中默认获取日期的周数?
现在我做:
df['sales_week'] = df['sales_date'].dt.week
df.astype({'sales_week': 'uint8'})
但是,它可能不是最佳内存,是吗?
使用.week属性时是否可以指定格式?
【问题讨论】:
标签: python pandas datetime memory format
您可以使用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
【讨论】:
astype,他们在问题中已经说了很多。他们担心的是内存浪费,他们是对的:调用astype 意味着pandas 首先生成一个int64 列,然后立即丢弃该列。因此,他们提出了关于直接获得int8 的问题。