【发布时间】:2017-12-11 03:38:59
【问题描述】:
我有一个包含 541 列的 DataFrame df,我需要将其列名的所有唯一对保存到单独 DataFrame 的行中,每行重复 8 次。
我想我会创建一个空的 DataFrame fp,对 df 的列名进行双重循环,每 8 行插入一次,然后用最后一个可用值填充空白。
当我尝试执行此操作时,我对花费多长时间感到困惑。有 541 列,我只需要写 146,611 次,但它需要 20 多分钟。这对于仅数据访问来说似乎是令人震惊的。问题出在哪里,我该如何解决? Pandas 用列生成相关矩阵所需的时间比这要少,所以我必须做错事。
这是我的意思的可重复示例:
fp = np.empty(shape = (146611, 10))
fp.fill(np.nan)
fp = pd.DataFrame(fp)
%timeit for idx in range(0, len(fp)): fp.iloc[idx, 0] = idx
# 1 loop, best of 3: 22.3 s per loop
【问题讨论】: