慕妹3146593
熊猫 > 0.25.0#if necessary#df['start_date']= pd.to_datetime(df['start_date'])#df['end_date']= pd.to_datetime(df['end_date'])new_df = (df.melt(['ID','type','codes'],value_name = 'date') .set_index('date') .groupby(['ID','type']) .resample('D').ffill() .drop(columns = 'variable') .explode('codes') .reset_index(level=[0,1],drop=True) .sort_values(['ID','type','codes']) .reset_index() .reindex(columns = ['ID','date','codes','type']) )print(new_df)熊猫 < 0.25.0#if necessary#df['start_date']= pd.to_datetime(df['start_date'])#df['end_date']= pd.to_datetime(df['end_date'])new_df = (df.melt(['ID','type','codes'],value_name = 'date') .set_index('date') .groupby(['ID','type']) .resample('D').ffill() .drop(columns = 'variable'))new_df = (new_df.reindex(new_df.index.repeat(new_df.codes.str.len())) .assign(codes=np.concatenate(new_df.codes.values)) .reset_index(level=[0,1],drop=True) .sort_values(['ID','type','codes']) .reset_index() .reindex(columns = ['ID','date','codes','type']))print(new_df)输出 ID date codes type0 1 2019-01-01 x A1 1 2019-01-02 x A2 1 2019-01-03 x A3 1 2019-01-04 x A4 1 2019-01-05 x A5 1 2019-01-01 y A6 1 2019-01-02 y A7 1 2019-01-03 y A8 1 2019-01-04 y A9 1 2019-01-05 y A10 2 2019-01-01 x B11 2 2019-01-02 x B12 2 2019-01-03 x B13 2 2019-01-04 x B14 2 2019-01-05 x B15 2 2019-01-01 y B16 2 2019-01-02 y B17 2 2019-01-03 y B18 2 2019-01-04 y B19 2 2019-01-05 y B20 2 2019-01-01 z B21 2 2019-01-02 z B22 2 2019-01-03 z B23 2 2019-01-04 z B24 2 2019-01-05 z B