首页 > 解决方案 > 遍历 pandas 数据帧时出现内存错误。如何解决这个问题?

问题描述

我想将每列乘以不同的数字并更新此数据框的值。

这是我拥有的数据类型,例如 20000x40 行与列

我写的代码是:

for j in test.columns:

    for i in r:

        for k in range(len(p)):

            test[i] = test[j].apply(lambda x:x*p[k])

            p.remove(p[k])

            break

        r.remove(i)

        break

在此处输入图像描述

p 是我想要相乘的数字列表。

p = [74, 46, 97, 2023, 364, 1012, 8, 242, 422, 78, 55, 90, 10, 44, 1, 3, 105, 354, 4, 26, 87, 18, 889, 9, 557, 630, 214, 1765, 760, 3344, 136, 26, 56, 10, 2, 2171, 125, 446, 174, 4, 174, 2, 80, 11, 160, 17, 72]

r是列名列表。

如何摆脱这个错误?

标签: pythonpandasdataframefor-loop

解决方案


根据您最初的陈述“我想将每一列与不同的数字相乘”,我写了这个答案。目前尚不清楚为什么在您的代码中必须多次使用 remove 以及为什么要使用如此多的 for 循环。在我的例子中,我生成了一个 100 行和 5 列的随机数据帧,以及一个包含 5 个值的数组以进行乘法运算。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(100, 5)), columns=list('12345'))
p=np.random.randint(0,100,5)
for i in range(5):
    df.iloc[:,i]=df.iloc[:,i]*p[i]

推荐阅读