我有一个大约9k行57列的数据框,这是'df'。pandas dataframe通过复制前一个数据帧的n行来创建一个新的数据帧,并更改日期
我需要一个新的数据框:'df_final' - 对于'df'的每一行,我必须复制每行'x'次并逐一增加每行的日期,也是'x'次。 虽然我可以这样做几次迭代,当我为'df''len(df)'这个循环做了这么长时间(> 3小时)的循环时,我实际上已经取消了它。我从来没有见过它的结局。以下是当前代码:
df.shape
output: (9454, 57)
df_int = df[0:0]
df_final = df_int[0:0]
range_df = len(df)
for x in range(0,2):
df_int = df.iloc[0+x:x+1]
if abs(df_int.iat[-1,3]) > 0:
df_int = pd.concat([df_int]*abs(df_int.iat[-1,3]), ignore_index=True)
for i in range(1, abs(df_int.iat[-1,3])):
df_int['Consumption Date'][i] = df_int['Consumption Date'][i-1] + datetime.timedelta(days = 1)
i += 1
df_final = df_final.append(df_int, ignore_index=True)
x += 1
'df'前两行的循环结果如下。
是否有另一种方式来获得所需的输出。看来大熊猫对循环处理不好。在VBA excel中,同样的循环需要大约3/4分钟...我试图改变一个当前处于excel中的进程,但是,如果没有办法让这个工作,我想我会坚持旧的方式。 ..
非常好的溶胶 – Dark
太感谢你了!这适合像手套! :) – dapaz