1

我有一个数据框,如下所示,有数万行和一千列: 在此处输入图像描述

对于 LSTM,我想

  1. 仅提取每列的值,
  2. 将它们放在数据框的开头并
  3. 在值开始到索引 99 之前填充 0。

但是,请注意,并非每一列都有相同数量的值。有些人已经很多了,有些人还没有。此外,在哪个时间戳上生成值是特定于列的。我确实使用以下代码实现了结果。但是,由于代码真的很慢(700 小时),我正在寻找更快执行计算逻辑的可能性。这需要很长时间,因为我想为 2008 年到 2020 年的每个小时的时间戳计算这种结果。

有什么方法可以显着加快代码速度?

df1=pd.DataFrame(index=range(100),columns=dummydata.columns)
for j in dummydata.columns:
    df1[j]=dummydata[(dummydata.index<=i)][j].dropna().iloc[-T:].iloc[::-1].reset_index(drop=True)
df1=df1.fillna(0).reset_index(drop=True)

在此处输入图像描述

4

1 回答 1

1

你可以试试这个,看看这是否更快?

dummydata.apply(lambda x: pd.Series(x.dropna().values)).fillna(0)

然后您可以使用仅选择前 100 行dummydata.loc[0:100, :]

于 2020-09-12T12:06:51.663 回答