python - 遍历 pandas 数据帧时出现内存错误。如何解决这个问题?
问题描述
我想将每列乘以不同的数字并更新此数据框的值。
我写的代码是:
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
是列名列表。
如何摆脱这个错误?
解决方案
根据您最初的陈述“我想将每一列与不同的数字相乘”,我写了这个答案。目前尚不清楚为什么在您的代码中必须多次使用 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]
推荐阅读
- abap - 选择单个与最多选择 1 行
- google-api - 谷歌人getBatchGet中的resourceNames逗号分隔吗?
- mysql - 如何将逗号分隔的列转换为mysql中的多行?
- testing - TFS 测试图表 - 如何分配要在仪表板中显示的测试结果图表,直到 sprint 结束日期?
- python - 如何使用牛顿或 L-BFGS 作为优化器?
- java - 如何避免使用break
- php - 在 php 中使用 xml 中的元素缩进值的多级数组?
- swift - 如何删除进度条圈中的 CAShapeLayer
- android - 从字符串文件定义清单中的权限,android?
- sql - 如何在 SQL 中执行 EVAL 表达式