【发布时间】:2020-01-30 16:38:05
【问题描述】:
我想将每一列与不同的数字相乘并更新此数据框的值。
我写的代码是:
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 是列名列表。
如何摆脱这个错误?
【问题讨论】:
-
meta.stackoverflow.com/questions/285551/… - 请不要粘贴代码图片,这样会导致无法搜索。
-
请不要将您的代码添加为图片,而是添加为数据框,以便我们解决您的问题。看起来好像您正在使用冗余的 for 循环 + 应用,这会占用大量内存..
-
您需要
test = test * np.array(p)吗? -
是的。列表中的每一列都有各自的编号,顺序相同。
标签: python pandas dataframe for-loop