我有一个数据框,它从日历中获取da Date并从日期中提取一些特征。
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)
但是没有用。
答案 0 :(得分:3)
使用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)
答案 1 :(得分:3)
或使用pd.concat
df = pd.concat([df]*48,axis=0).reset_index()
df['INTERVAL'] = df.index+ 1
答案 2 :(得分:1)
您可以使用自己的想法,然后为INTERVALL
列
df= df.append([df]*47,ignore_index=True)
df["INTERVALL"] = range(1,49)
请注意,您需要复制47次,然后使用1到48之间的范围。