一只斗牛犬
如果我理解正确的话,“delta”列中的每个值都是从“start_date”开始的月数。在结果中,“delta”列必须只包含一个,所以它并不重要,可以稍后添加。考虑到“start_date”列中的值是 datetime64 类型,这是我想出的:np.hstack((df.apply(lambda row: pd.date_range(row['start_date'], periods=row['delta'], freq='m'), axis=1).values))此代码转换问题中的数据框: start_date delta0 2018-06-30 21 2018-06-30 22 2018-06-30 23 2018-06-30 24 2018-06-30 45 2018-07-31 46 2018-07-31 27 2018-07-31 6进入一维日期数组:array(['2018-06-30T00:00:00.000000000', '2018-07-31T00:00:00.000000000', '2018-06-30T00:00:00.000000000', '2018-07-31T00:00:00.000000000', '2018-06-30T00:00:00.000000000', '2018-07-31T00:00:00.000000000', '2018-06-30T00:00:00.000000000', '2018-07-31T00:00:00.000000000', '2018-06-30T00:00:00.000000000', '2018-07-31T00:00:00.000000000', '2018-08-31T00:00:00.000000000', '2018-09-30T00:00:00.000000000', '2018-07-31T00:00:00.000000000', '2018-08-31T00:00:00.000000000', '2018-09-30T00:00:00.000000000', '2018-10-31T00:00:00.000000000', '2018-07-31T00:00:00.000000000', '2018-08-31T00:00:00.000000000', '2018-07-31T00:00:00.000000000', '2018-08-31T00:00:00.000000000', '2018-09-30T00:00:00.000000000', '2018-10-31T00:00:00.000000000', '2018-11-30T00:00:00.000000000', '2018-12-31T00:00:00.000000000'], dtype='datetime64[ns]')可用于创建新数据框,即:df2 = pd.DataFrame()df2['start_date'] = np.hstack((df.apply(lambda row: pd.date_range(row['start_date'], periods=row['delta'], freq='m'), axis=1).values))df2['delta'] = 1