Skip to main content
 首页 » 编程设计

python之在 Pandas 中重复行并添加序列列

2025年05月04日12langtianya

我有一个数据框,它从日历中获取日期并从日期中提取一些特征。

def processDate(self,date): 
    WEEKDAY_MAP = {0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7} 
    df = pandas.DataFrame(data=[date], columns = ['DATE']) 
    df['DATE'] = pandas.to_datetime(df['DATE']) 
    df['DATE'] = df['DATE'].astype(str) 
    df['MONTH'] = pandas.DatetimeIndex(df['DATE']).month 
    df['WEEKDAY'] = pandas.DatetimeIndex(df['DATE']).dayofweek 
    df['WEEKDAY'] = df['WEEKDAY'].map(WEEKDAY_MAP) 
    df['HOLIDAY'] = '0' 
    set_holiday(df) 
    df['INTERVALL'] = '1' 
    df.append([df]*5,ignore_index=True) 
    print(df) 

控制台日志:

     DATE        MONTH  WEEKDAY HOLIDAY INTERVALL 
     2017-09-13     9     3      0      1 

我需要:将条目复制 48 次并增加 INTERVALL 值。

结果应该是这样的:

控制台日志:

     DATE        MONTH  WEEKDAY HOLIDAY INTERVALL 
     2017-09-13     9     3      0      1 
     2017-09-13     9     3      0      2 
     2017-09-13     9     3      0      3 
     2017-09-13     9     3      0      4 
     2017-09-13     9     3      0      5 
     ... 
     2017-09-13     9     3      0      48 

我试过 df.append([df]*48,ignore_index=True) 但没用。

请您参考如下方法:

使用 np.repeat 并创建一个新的数据框。

df = pd.DataFrame(df.values.repeat(48, axis=0), columns=df.columns) 
df['INTERVALL'] = df.index + 1 

df.head(10) 
 
         DATE MONTH WEEKDAY HOLIDAY  INTERVALL 
0  2017-09-13     9       3       0          1 
1  2017-09-13     9       3       0          2 
2  2017-09-13     9       3       0          3 
3  2017-09-13     9       3       0          4 
4  2017-09-13     9       3       0          5 
 
df.shape 
(48, 5)