我有一个数据框,它从日历中获取日期并从日期中提取一些特征。
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)
