【发布时间】:2018-03-04 23:57:19
【问题描述】:
我有一个大约 9k 行和 57 列的数据框,这是“df”。
我需要一个新的数据框:'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 中的进程更改为 python,但是,如果没有办法完成这项工作,我想我会坚持旧方法。 ..
【问题讨论】:
标签: python pandas loops dataframe rows