熊猫日期格式

时间:2018-11-19 11:38:06

标签: python pandas dataframe

我具有以下两个功能:

def create_base_df(start_date, end_date):
    base_df = pd.DataFrame({"dt": pd.date_range(start_date, end_date)})
    base_df["dt_num_key"] = base_df.dt.apply(lambda x: datetime.datetime.strftime(x, "%Y%m%d")).astype(int)
    base_df["cal_yr_nkey"] = base_df.dt.dt.strftime("%Y")
    base_df["cal_mon_ofyr_nkey"] = base_df.dt.dt.strftime("%m")
    base_df["cal_qtr_ofyr_nkey"] = base_df.dt.dt.quarter.astype(str).apply(lambda x: x.rjust(2, '0'))
    base_df["cal_wk_ofyr_nkey"] = base_df.dt.dt.week.astype(str)

    return base_df

def month_operations(df):
    df["cal_mon_nm"] = df.dt.dt.strftime("%B")
    df["cal_mon_shrt_nm"] = df.dt.dt.strftime("%b")
    df["cal_yr_mon_nkey"] = df["cal_yr_nkey"] + df["cal_mon_ofyr_nkey"]
    df["mon_seq_id"] = df.cal_yr_mon_nkey.sort_values().reset_index()     ["cal_yr_mon_nkey"].rank(method='dense').astype(int)
    df["dt_frst_dayof_mon"] = df.dt.apply(lambda x: datetime.datetime(x.year, x.month, 1))
    df["dt_frst_dayof_mon_nkey"] =   df["dt_frst_dayof_mon"].dt.strftime("%Y%m%d")
    df["dt_lst_dayof_mon"] = df["dt_frst_dayof_mon"] + pd.tseries.offsets.DateOffset(
    months=1) - pd.tseries.offsets.DateOffset(days=1)
    df["dt_lst_dayof_mon_nkey"] =   df["dt_lst_dayof_mon"].dt.strftime("%Y%m%d")
    df["dt_frst_dayof_lst_mon"] = df["dt_frst_dayof_mon"] - pd.DateOffset(months=1)
    df["dt_frst_dayof_lst_mon_nkey"] = df["dt_frst_dayof_lst_mon"].dt.strftime("%Y%m%d")
    df["dt_lst_mon"] = df.dt - pd.tseries.offsets.DateOffset(months=1)
    df["dt_lst_mon_nkey"] = df["dt_lst_mon"].dt.strftime("%Y%m%d")
    df["dt_lst_yr_lst_mon"] = df.dt_lst_mon - pd.tseries.offsets.DateOffset(years=1)
    df["dt_lst_yr_lst_mon_nkey"] = df["dt_lst_yr_lst_mon"].dt.strftime("%Y%m%d")

    return df

列dt_lst_yr_lst_mon_nkey,dt_lst_mon_nkey和dt_frst_dayof_lst_mon_nkey返回的是日期时间格式的值(“ 1899-12-01 00:00:00”),我似乎无法弄清楚原因。所有其他* key列均按预期返回整数

我的主要内容如下:

base_df = create_base_df(start_date="01/01/1900", end_date="01/12/1900")
month_df = month_operations(base_df)

预期输出:如果 dt_lst_yr_lst_mon 的值为“ 1900-12-01 00:00:00”,则dt_lst_yr_lst_mon_nkey将为“ 19001201”

任何关于我要去哪里的指示都值得赞赏。

谢谢。

0 个答案:

没有答案